json对象 和 字符串 互相转换

本文介绍了如何使用JSON.stringify()和eval()将JavaScript对象转换为字符串,以及如何将字符串转换回JSON对象,适用于IE8及以上浏览器。
[size=large]
//ie8以上:
//json对象转成字符串:
JSON.stringify(data)

//字符串转成json对象:
eval(str)
//或者:
strJSON.parseJSON(); [/size]
### Java对象字符串互相转换的最快方法 在Java中,将对象字符串进行互相转换通常涉及序列化反序列化过程。以下是几种常见且高效的实现方式: #### 1. 使用FST(Fast-Serialization Toolkit) FST是一个高性能的Java序列化框架,其设计目标是提供比标准Java序列化更快的速度。通过FST,可以将对象快速序列化为字节数组,然后将其转换为Base64编码的字符串以方便传输或存储[^1]。 以下是一个使用FST进行对象字符串转换的示例代码: ```java import org.nustaq.serialization.FSTObjectInput; import org.nustaq.serialization.FSTObjectOutput; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Base64; public class FSTExample { public static String serialize(Object obj) throws Exception { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); FSTObjectOutput fstObjectOutput = new FSTObjectOutput(byteArrayOutputStream); fstObjectOutput.writeObject(obj); fstObjectOutput.close(); return Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray()); } public static Object deserialize(String str) throws Exception { byte[] data = Base64.getDecoder().decode(str); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data); FSTObjectInput fstObjectInput = new FSTObjectInput(byteArrayInputStream); return fstObjectInput.readObject(); } } ``` #### 2. 使用Jackson库 Jackson是一个流行的JSON处理库,能够高效地将Java对象转换JSON字符串,并支持反向操作。Jackson以其高性能易用性著称[^4]。 以下是一个使用Jackson进行对象字符串转换的示例代码: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonExample { private static final ObjectMapper objectMapper = new ObjectMapper(); public static String serialize(Object obj) throws Exception { return objectMapper.writeValueAsString(obj); } public static <T> T deserialize(String str, Class<T> clazz) throws Exception { return objectMapper.readValue(str, clazz); } } ``` #### 3. 使用Kryo库 Kryo是一个轻量级、高性能的序列化框架,特别适合于需要快速序列化反序列化的场景。它可以通过配置插件支持Base64编码,从而实现对象字符串之间的转换。 以下是一个使用Kryo进行对象字符串转换的示例代码: ```java import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import java.util.Base64; public class KryoExample { private static final Kryo kryo = new Kryo(); public static String serialize(Object obj) { Output output = new Output(1024, -1); kryo.writeObject(output, obj); output.close(); return Base64.getEncoder().encodeToString(output.toBytes()); } public static <T> T deserialize(String str, Class<T> clazz) { Input input = new Input(Base64.getDecoder().decode(str)); T obj = kryo.readObject(input, clazz); input.close(); return obj; } } ``` #### 性能对比 - **FST**:适用于需要极高性能的场景,尤其是大规模数据的序列化反序列化。 - **Jackson**:适合JSON格式的字符串转换,易于集成到Web应用中。 - **Kryo**:轻量级且高性能,适合对速度有严格要求的应用场景。 每种方法都有其适用场景,选择时需根据具体需求权衡性能、易用性兼容性等因素。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值