java的json转化

  • Post author:
  • Post category:java


com.alibaba.fastjson.com



JSONObject



1、json格式的字符串转JSON对象

带转义和引号的字符串转换:

String jsonStr="{\"name\":\"zhangsan\",\"age\":\"123\"}";
JSONObject jsonObject=JSONObject.parseObject(jsonStr);

不带转义和引号的字符串转换:

//不带转义的json格式字符串转换{success=0, msgid=1000001, msg=appkey错误或不存在}
 String str="{success=0, msgid=1000001, msg=appkey错误或不存在}";
 
 String input = StringUtils.substringBetween(str, "{", "}");             // substringBetween 截取两个标签之间的文本  input="success=0, msgid=1000001, msg=appkey错误或不存在"
 
 Map<String, String> map = Splitter.on(",").withKeyValueSeparator("=").split(input);     // 指定以,为连接的input字符串,withKeyValueSeparator 指定键值对中的分隔符

 System.out.println(JSON.toJSONString(map));     // {"success":"0"," msgid":"1000001"," msg":"appkey错误或不存在"}

不带引号的字符串,需要用到guava分割后转:

https://blog.csdn.net/chinabestchina/article/details/89290494



2、通过key获取JSON对象的值

JSONObject jsonObject=JSONObject.parseObject(jsonStr);
//获取key为name的值
String name=jsonObject.get("name");



3、JSON对象转某个对象



JSON格式字符串转为实体对象

jsonStr为JSON格式字符串,Employee 为要转为的对象

String jsonStr= "{\"name\":\"张三\",\"age\":18}";
Employee emp=JSONObject.parseObject(jsonStr, Employee.class);

这个方法会出现一个问题,某些值会丢失。

替代方法,先转为Map,然后直接通过get取值

Map<String, Object> map = JSON.parseObject(json, Map.class);
map.get("name");



JSONObject转为实体对象

String jsonString = "{\"name\":\"张三\",\"age\":18}";
//JSON格式字符串转为JSONObject 
JSONObject jsonObject = JSONObject.parseObject(jsonString);	
//JSONObject转为实体对象
User user = jsonObject.toJavaObject(User.class);



4、对象转JSON

JSONObject json=(JSONObject) JSONObject.toJSON(res);



5、List转JSON

List<User> users= new ArrayList<>();
for (int i=1;i<=100;i++){
    User user=new User();
    user.setUserName("张"+i);
    user.setPassWord("pwd"+i);
    users.add(user);	
}
String strs= JSON.toJSONString(users);



6、Map和JSON转换



6.1 、Map转JSON

        Map<String,String> map = new HashMap<String,String>();
        map.put("name","zhangsan");
        map.put("age","123");
        map.put("sex","1");
        String json=JSON.toJSONString(map);     //map先转string
        JSONObject jsonObject = JSONObject.parseObject(json);       //string再转JSONObject
        System.out.println(jsonObject);     //  {"sex":"1","name":"zhangsan","age":"123"}



6.2 、JSON转Map

	 Map map1=JSON.parseObject(JSON.toJSONString(jsonObject));       //json先转string,再转Map

    map1.forEach((k,v)->{
        System.out.println(k+":"+v);
    });



new ObjectMapper()转对象为JSON格式字符串

        User user = new User("张三", 20);
        String jsonUser = new ObjectMapper().writeValueAsString(user);
        System.out.println(jsonUser);

在这里插入图片描述



toString后多了斜杠\

使用

JSONObject的toString时,多了斜杠\

,直接使用

JSONObject.parse

转一下,

在这里插入图片描述

使用

JSONObject.parse



在这里插入图片描述



JSONArray



JSONArray转LIST

List<User> users = user.toJavaList(User.class);



List转JSONArray

//list先转JSON,再通过JSONArray的parseArray转成JSONArray
JSONArray.parseArray(JSON.toJSONString(list))



String转JSONArray

//providers="[{"bdid":"4ee415092e1344a18e1864b2fe8ebbe0","winId":"e8b40032886a4e7a8ae33c7f17343e99","remark":""},{"bdid":"840df7c0b9114bc3b17359e69b91a661","winId":"9e600a6dc0604909a943946b3ca7c278","remark":""}]"
JSONArray jsonArray = JSONArray.parseArray(providers);



JSONArray转String

//	seal2=[11,12,13]
   JSONArray seal2 = (JSONArray) map.get("seal2");

        System.out.println(seal2.toString());
        //或者直接toString
        System.out.println(map.get("seal"+i).toString());

在这里插入图片描述



其它



JSON格式的字符串转Map

//String sealStr={"seal0":["1"],"seal1":["4","5"],"seal2":["11","12","13"]}
        Map map= (Map) JSON.parse(sealStr);

        map.forEach((k,v)->{
            System.out.println(k+"--------------------"+v);

        });

在这里插入图片描述



JSONObject.parseObject和jsonObject.toJavaObject

它们都可以将json格式字符串转为实体对象,他们的区别是

parseObject

直接可以将json格式字符串转为实体对象,而

toJavaObject

需要先将json格式字符串转为

JSONObject

,然后再

toJavaObject

转为实体对象

JSONObject.parseObject

String jsonStr= "{\"name\":\"张三\",\"age\":18}";
Employee emp=JSONObject.parseObject(jsonStr, Employee.class);

JSONObject.toJavaObject

String jsonString = "{\"name\":\"张三\",\"age\":18}";
//JSON格式字符串转为JSONObject 
JSONObject jsonObject = JSONObject.parseObject(jsonString);	
//JSONObject转为实体对象
User user = jsonObject.toJavaObject(User.class);



版权声明:本文为a3562323原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。