一个java对象中的某个固定属性反序列化时指定它的类型很简单:
classMap.put("user", User.class);
jsonCfg.setClassMap(classMap);
如果是一个map对象,map中的key是不确定的,如何指定它的value类型呢?
使用
“.*”匹配map中的所有key,如下所示
classMap.put(".*", User.class);
jsonCfg.setClassMap(classMap);
示例如下:
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
public class Json2MapTest {
public static final Log log = LogFactory.getLog(Json2MapTest.class);
@Test
public void testJson2Map() {
Map<String, User> map = new HashMap<String, User>();
map.put("user0", new User(0,"user0","user0@apusic.com"));
map.put("user1", new User(1,"user1","user1@apusic.com"));
String jsonString = JSONObject.fromObject(map).toString();
JSONObject jsonObj = JSONObject.fromObject(jsonString);
JsonConfig jsonCfg = new JsonConfig();
jsonCfg.setRootClass(Map.class);
Map<String,Class> classMap = new HashMap<String, Class>();
classMap.put(".*", User.class);
jsonCfg.setClassMap(classMap);
Map<String,User> deserializedMap = (Map<String, User>) JSONObject.toBean(jsonObj,new HashMap(),jsonCfg);
log.debug(deserializedMap.toString());
}
}
输出结果:
{user0=User [email=user0@apusic.com, id=0, name=user0], user1=User [email=user1@apusic.com, id=1, name=user1]}
分享到:
相关推荐
json 反序列化 http://blog.csdn.net/walker02/article/details/8105936
C++ JSON 序列化与反序列化 相关的博客文章见:http://blog.csdn.net/TragicGuy
delphi_JSON序列化反序列化
通过html页面调用js获取页面数据转化成json数据插入数据库和写入js文件,读取数据库数据转换成json数据反序列化化在页面上显示
JsonTools是一个不错的JSON序列化和反序列化功能包
比如下面的JS对象 var user=new Object(); user.name='吕洞宾'; user.friends=[{name:"铁拐李",sex:"男",friend:user},{name:"何仙姑",sex:"女",friend:user}]; 一般的解析工具都会出错 详细信息请参观 ...
jackson json序列化 json反序列化 jar包 直接下载拷贝到项目中buildpath即可使用
Vbs序列化/反序列化Json基类 可直接使用,bug已被我修复 Example: Dim fso, json, str, o, i Set json = New VbsJson Set fso = WScript.CreateObject("Scripting.Filesystemobject") str = fso.OpenTextFile(...
json反序列化、快速有效的取出多层嵌套的对象
delphi JSON序列化反序列化带List
Gson 中解决 json 反序列化时相同属性对应不同类型的值的问题(代码),对应文章链接:https://blog.csdn.net/ZiFung_Yip/article/details/89143255
Json序列化与反序列化
C# 后台序列化Json序列、反序列化Json序列(三种方法)
NULL 博文链接:https://hw1287789687.iteye.com/blog/1993318
所有在反序列化Json字符串时需要一种通用的转换方式,而不是写死的某个类的反序列化,这里介绍的一种思路就是使用dynamic关键字来实现通用反序列化并比较反序列化后的对象是否深度相等即比较对象的各个字段是否相等...
极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。
Json序列化和反序列化代码,写的不好,请多指教,用C#语言
/// 反序列化Json为模型对象 /// /// 模型对象类型 /// <param name="Json">Json字符串 /// <returns></returns> public static T GetModel(string Json) where T : new() { return new ...
unity2018的 Json 文件的序列化反序列化读写工程,主要是支持反序列化读取Json文件,序列化写入Json文件的unity2018的Demo。里面自带了Newtonsoft.Json的Newtonsoft.Json.dll。
Newtonsoft.Json.Net20【4.0版本】 Json 序列化反序列化