1. toJSONString (对象或集合)(内套集合也可以)转JSON对象
JSONObject json = new JSONObject();
json.toJSONString(user)
2. JSON格式字符串与JSON对象之间的转换。
String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";
JSONObject jsonObject = JSONObject.parseObject(j);
或者
JSONObject jsonObject = JSON.parseObject(j);
3. json字符串-数组类型与JSONArray之间的转换
//json字符串-数组类型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
4. 复杂json格式字符串与JSONObject之间的转换
JSONObject jsonObject = JSON.parseObject(j);
5. json字符串转JAVA对象
User user = JSON.parseObject(jsonString, new TypeReference<User>() {} );
或
User user = JSON.parseObject(jsonString, User.class);
6. java对象 须先转json字符串后 才能转为json对象
Object obj = jsonArray.get(0);
String ob = JSON.toJSONString(obj);//java对象 须先转json字符串后 才能转为json对象
JSONObject o = JSON.parseObject(ob);
NoUser noUser = JSON.toJavaObject(jsonObject,NoUser.class);//[把json对象转为java对象]
Binding binding = JSON.parseObject(msgJson.toString(), Binding.class);
Binding binding1 =JSON.toJavaObject(msgJson,Binding.class);
BObject = JSON.toJavaObject(JSON.parseObject(AObject .toString()),BObject .class);
7. json字符串集合(jsonArray) 转LIST对象、Map
List:
String str = "[{\"goods_id\":1},{\"goods_id\":2}]";
List<Goods> goodslist = JSON.parseObject(str,new TypeReference<ArrayList<Goods>>(){});
例子:
JSONArray content_ = jsonObj.getJSONArray("Content");
List<TableNameColumnDataObj> contentList = Lists.newArrayList();
for (int i = 0; i < content_.size(); i++) {
JSONObject j = JSONObject.parseObject(content_.get(i).toString());
String tableName = j.getString("TableName");//表名
JSONArray jsonArray = j.getJSONArray("ColumnData");
【List<FiledNameFiledValueObj> columnDataList = JSON.parseObject(jsonArray.toJSONString(), new TypeReference<ArrayList<FiledNameFiledValueObj>>() {
});//[[jsonArray转为javaList]]】
TableNameColumnDataObj t = new TableNameColumnDataObj();
t.setTableName(tableName);
t.setColumnData(columnDataList);
contentList.add(t);
}
例子:
@RequestMapping(value = "/delMember", method = RequestMethod.POST)
@ResponseBody
public boolean delMember(@RequestBody JSONObject param) {
if(param == null || param.getJSONArray("idList")==null){
return false;
}
【List<Integer> idList = param.getJSONArray("idList").toJavaList(Integer.class);】
或者
List<PriorityModel> priorityModels = JSONArray.parseArray(entry.getValue(), PriorityModel.class); //entry.getValue()是String类型
Map:
8. 【Demo之一在:E:\peixun\Java web\javawebProjectSet\2052\1SpringBoot\boot07-solrj的config包下的Json.java类,[在js,jq中用eval将json字符串转为json对象取值的演示在templates文件夹下的index.html中,您还可以在其中回顾js,jq]。】
9.//[JSONObject属性的排序]
String str = JSONObject.toJSONString(jsonObject, SerializerFeature.SortField.MapSortField);//【SerializerFeature.SortField.MapSortField】
或
JSONObject jsonobj = new JSONObject(true);
JSONObject内部是用Hashmap来存储的,所以输出是按key的ASCII码排序来的,如果要让JSONObject按固定顺序(put的顺序)排列,可以修改JSONObject的定义HashMap改为LinkedHashMap。
即定义JSONObject可以这样:JSONObject jsonObj = new JSONObject(new LinkedHashMap());或者 JSONObject jsonObj = new JSONObject(true);
JSON.toJSONString时保留null值
亲测:字符串提前保留为空串,数字为0 WriteMapNullValue WriteNullStringAsEmpty WriteNullNumberAsZero 这3个同时使用
从输出结果可以看出,null对应的key已经被过滤掉;这明显不是我们想要的结果,这时我们就需要用到fastjson的SerializerFeature序列化属性
也就是这个方法:JSONObject.toJSONString(Object object, SerializerFeature… features)
Fastjson的SerializerFeature序列化属性
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
具体使用方式
private static final SerializerFeature[] serializerFeatures;
//...
static {
serializerFeatures = new SerializerFeature[] {
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty
};
}
JSON.toJSONString(msgMap, serializerFeatures)
JAVA控制台格式化输出json字符串
//【alibaba的json】
JSONObject jsonObjec = JSON.parseObject(string);
String pretty = JSON.toJSONString(jsonObjec, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteDateUseDateFormat);
System.out.println(jsonObjec.toString());
System.out.println(pretty);
//【google的json】
String pretty = toPrettyFormat(jsonString);
//原文链接:https://www.cnblogs.com/shoufeng/p/11196500.html
Java的map 转 fastjson的JSON对象
JSONObject.toJSONString(shouQuanFailureMap);
map必须<String,Object>
List<PriorityModel> value = entry.getValue();
String s = JSONArray.toJSONString(value);
//这样对List进行toString不会包含多余的空格
[{"level":1,"ruleTableField":"User Name","ruleTableName":"person","touchPointCode":8},{"level":1,"ruleTableField":"Birthdate","ruleTableName":"person","touchPointCode":8},{"level":1,"ruleTableField":"Gender","ruleTableName":"person","touchPointCode":8},{"level":1,"ruleTableField":"Country","ruleTableName":"person","touchPointCode":8},{"level":1,"ruleTableField":"Province","ruleTableName":"person","touchPointCode":8},{"level":1,"ruleTableField":"City","ruleTableName":"person","touchPointCode":8}]
@JsonFormat、@JsonInclude、@DateTimeFormat