fastjson解析json
- Java
- 13天前
- 30热度
- 0评论
maven引入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.48</version>
</dependency>
JSONobject是FastJson提供的对象,在api中是用一个私有的常量map进行封装的,实际就是一个map,只不过FastJson对其进行了封装
1、把对象转换成JSON数据(String)
String jsonStrng = JSON.toJSONString(object);
//支持的类型:JavaBean, List<JavaBean>, List<String>, List<Map<String,Object>
HashMap<String,String>map = new HashMap<>();
map.put("a","1");
map.put("b","2");
map.put("c","3");
String json = JSON.toJSONString(map);//map转String
JSONObject jsonObject = JSON.parseObject(json);//String转json
//json转map
Map<String, String> jsonMap = JSONObject.toJavaObject(jsonObject, Map.class);
//String转map
Map<String, String> jsonMap1 = JSONObject.parseObject(json, Map.class);
2、解析JSON数据
JavaBean
Person person = JSON.parseObject(jsonString, Person.class);
List< JavaBean >
List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
List< String >
List<String> listString = JSON.parseArray(jsonString, String.class);
List< Map< String,Object > >
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
Map< String, List< BasicPojo > >
Map<String,List<BasicPojo>> rolePts = JSON.parseObject(permission, new TypeReference<Map<String,List<BasicPojo>>>(){});
3、常见问题
3.1、把对象转成JSON字符串缺少字段
比如缺少:pId,uName 等字段
原因:检查对象的get set 方法,一般是自动生成的代码大小写错误,确定方法为:setPId(...) getPId()
3.2、把对象转成JSON字符串缺少值为NULL的字段
使用方法:JSONObject.toJSONString(Object object, SerializerFeature... features)
Map<String , Object> jsonMap = new HashMap<String ,Object>();
jsonMap.put("a",1);
jsonMap.put("b","");
jsonMap.put("c",null);
jsonMap.put("d","wuzhuti.cn");
String str = JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue);
System.out.println(str);
//输出结果:{"a":1,"b":"","c":null,"d":"wuzhuti.cn"}
Fastjson的SerializerFeature序列化属性
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null