json值格式
•数字(整数或浮点数)
•字符串(在双引号中)
•逻辑值(true或 false)
•null
•数组(在方括号中) 例如:{"Teachers":["roy","will"]}
String arrayJson="[1,3,4]"; //转换成json数组(用JSON.paraseArray) JSONArray arrayJO=JSON.parseArray(arrayJson); //jsonArray通过下标获取存储的第二个元素 System.out.println("存储的第二个元素是"+arrayJO.get(1));
讯享网
#输出结果
讯享网存储的第二个元素是3
•对象(在花括号中) 例如:{"course":{"teacher":"roy","courese":"java"}}
#例1: jsonString值
String jsonString="{\"status\":200,\"msg\":\"查询成功\",\"nickname\":\"测试账号\",\"id\":\"12831\",\"describe\":\"will的测试账号\"}"; //转换成json 对象(用JSON.paraseObject) JSONObject jsonObject=JSON.parseObject(jsonString); System.out.println(jsonObject); //jsonObject通过键的方式获取值 System.out.println("Nickname的值是"+jsonObject.get("nickname"));
#输出结果
讯享网# jsonString值输出结果 {"msg":"查询成功","nickname":"测试账号","id":"12831","describe":"will的测试账号","status":200} Nickname的值是测试账号
#例2:Object值
//将对象的属性写成 键:值的格式。 WashMachine wm=new WashMachine(); //*object或其他格式使用toJSONString方法转成JSON格式的字符串 String s =JSON.toJSONString(wm); System.out.println(s); //将字符串转成JSONobject JSONObject jsonObject= JSON.parseObject(s); System.out.println(jsonObject); //获取某个值 Object canUse=jsonObject.get("canUse");
#输出结果
讯享网#Object值输出结果 {"age":10,"brand":"米","canUse":false,"capacity":90,"desc":["美观","大气","有烘干功能"],"dog":{"age":0,"ear":"尖尖的耳朵"},"king":"电器","price":0.0,"weight":40} false
json的使用
#Json的使用
//删 jsonObject.remove("brand"); System.out.println(jsonObject); //改 jsonObject.replace("king","洗衣机"); System.out.println(jsonObject); //增 jsonObject.put("volume","38"); System.out.println(jsonObject); //遍历 json字符串中的不同类型格式所对应的json处理方式 //对象object使用keyset()去遍历 for (String key : jsonObject.keySet()) { //先获取到Object类型 Object value=jsonObject.get(key); if(value instanceof String){ System.out.println(value+"是个字符串"); //强转数据类型成String // String value1=(String)value; }else if(value instanceof Boolean){ System.out.println(value+"是个布尔值"); }else if(value instanceof BigDecimal){ System.out.println(value+"是个浮点数"); }else if(value instanceof Integer){ System.out.println(value+"是个整数"); }else if(value instanceof JSONObject){ System.out.println(value+"是个json对象"); }else if(value instanceof JSONArray){ System.out.println(value+"是个json数组"); } }
#输出结果
讯享网//删 {"king":"电器","price":0.0,"weight":40,"dog":{"ear":"尖尖的耳朵","age":0},"age":10,"canUse":false,"capacity":90,"desc":["美观","大气","有烘干功能"]} //改 {"king":"洗衣机","price":0.0,"weight":40,"dog":{"ear":"尖尖的耳朵","age":0},"age":10,"canUse":false,"capacity":90,"desc":["美观","大气","有烘干功能"]} //增 {"volume":"38","king":"洗衣机","price":0.0,"weight":40,"dog":{"ear":"尖尖的耳朵","age":0},"age":10,"canUse":false,"capacity":90,"desc":["美观","大气","有烘干功能"]} //遍历 38是个字符串 洗衣机是个字符串 0.0是个浮点数 40是个整数 {"ear":"尖尖的耳朵","age":0}是个json对象 10是个整数 false是个布尔值 90是个整数 ["美观","大气","有烘干功能"]是个json数组 狗对象的耳朵属性是尖尖的耳朵 获取desc数组中的第二个值是有烘干功能 尖尖的耳朵 米是个字符串
Json的解析
方法1:直接解析
String s="jQuery_70({\"Srcid\":\"5809\",\"ResultCode\":\"0\",\"status\":\"0\",\"QueryID\":\"\",\"Result\":[{\"DisplayData\":{\"strategy\":{\"tempName\":\"ip\",\"precharge\":\"0\",\"ctplOrPhp\":\"1\"},\"resultData\":{\"tplData\":{\"srcid\":\"5809\",\"resourceid\":\"5809\",\"OriginQuery\":\"163.228.65.13\",\"origipquery\":\"163.228.65.13\",\"query\":\"163.228.65.13\",\"origip\":\"163.228.65.13\",\"location\":\"\\u4e0a\\u6d77\\u5e02 \\u5fae\\u8f6f\\u4e91\",\"userip\":\"\",\"showlamp\":\"1\",\"tplt\":\"ip\",\"titlecont\":\"IP\\u5730\\u5740\\u67e5\\u8be2\",\"realurl\":\"http:\\/\\/www.ip138.com\\/\",\"showLikeShare\":\"1\",\"shareImage\":\"1\",\"data_source\":\"AE\"},\"extData\":{\"tplt\":\"ip\",\"resourceid\":\"5809\",\"OriginQuery\":\"163.228.65.13\"}}},\"ResultURL\":\"http:\\/\\/www.ip138.com\\/\",\"Weight\":\"2\",\"Sort\":\"1\",\"SrcID\":\"5809\",\"ClickNeed\":\"0\",\"SubResult\":[],\"SubResNum\":\"0\",\"ar_passthrough\":[],\"RecoverCacheTime\":\"0\"}],\"data\":[{\"srcid\":\"5809\",\"resourceid\":\"5809\",\"OriginQuery\":\"163.228.65.13\",\"origipquery\":\"163.228.65.13\",\"query\":\"163.228.65.13\",\"origip\":\"163.228.65.13\",\"location\":\"\\u4e0a\\u6d77\\u5e02 \\u5fae\\u8f6f\\u4e91\",\"userip\":\"\",\"showlamp\":\"1\",\"tplt\":\"ip\",\"titlecont\":\"IP\\u5730\\u5740\\u67e5\\u8be2\",\"realurl\":\"http:\\/\\/www.ip138.com\\/\",\"showLikeShare\":\"1\",\"shareImage\":\"1\"}],\"ResultNum\":\"1\"})"; //直接解析 JSONObject tplDataJson=jsonObject.getJSONArray("Result").getJSONObject(0).getJSONObject("DisplayData").getJSONObject("resultData").getJSONObject("tplData"); //用object的keyset去遍历 for (String key : tplDataJson.keySet()) { System.out.println(key+"的值是"+tplDataJson.get(key)); }
#输出结果
讯享网resourceid的值是5809 OriginQuery的值是163.228.65.13 origipquery的值是163.228.65.13 query的值是163.228.65.13 shareImage的值是1 origip的值是163.228.65.13 showlamp的值是1 data_source的值是AE tplt的值是ip titlecont的值是IP地址查询 srcid的值是5809 realurl的值是http://www.ip138.com/ userip的值是 location的值是上海市 微软云 showLikeShare的值是1
方法2:JsonPath解析
$是表示根目录,.(点)是表示下一层级
String s="jQuery_70({\"Srcid\":\"5809\",\"ResultCode\":\"0\",\"status\":\"0\",\"QueryID\":\"\",\"Result\":[{\"DisplayData\":{\"strategy\":{\"tempName\":\"ip\",\"precharge\":\"0\",\"ctplOrPhp\":\"1\"},\"resultData\":{\"tplData\":{\"srcid\":\"5809\",\"resourceid\":\"5809\",\"OriginQuery\":\"163.228.65.13\",\"origipquery\":\"163.228.65.13\",\"query\":\"163.228.65.13\",\"origip\":\"163.228.65.13\",\"location\":\"\\u4e0a\\u6d77\\u5e02 \\u5fae\\u8f6f\\u4e91\",\"userip\":\"\",\"showlamp\":\"1\",\"tplt\":\"ip\",\"titlecont\":\"IP\\u5730\\u5740\\u67e5\\u8be2\",\"realurl\":\"http:\\/\\/www.ip138.com\\/\",\"showLikeShare\":\"1\",\"shareImage\":\"1\",\"data_source\":\"AE\"},\"extData\":{\"tplt\":\"ip\",\"resourceid\":\"5809\",\"OriginQuery\":\"163.228.65.13\"}}},\"ResultURL\":\"http:\\/\\/www.ip138.com\\/\",\"Weight\":\"2\",\"Sort\":\"1\",\"SrcID\":\"5809\",\"ClickNeed\":\"0\",\"SubResult\":[],\"SubResNum\":\"0\",\"ar_passthrough\":[],\"RecoverCacheTime\":\"0\"}],\"data\":[{\"srcid\":\"5809\",\"resourceid\":\"5809\",\"OriginQuery\":\"163.228.65.13\",\"origipquery\":\"163.228.65.13\",\"query\":\"163.228.65.13\",\"origip\":\"163.228.65.13\",\"location\":\"\\u4e0a\\u6d77\\u5e02 \\u5fae\\u8f6f\\u4e91\",\"userip\":\"\",\"showlamp\":\"1\",\"tplt\":\"ip\",\"titlecont\":\"IP\\u5730\\u5740\\u67e5\\u8be2\",\"realurl\":\"http:\\/\\/www.ip138.com\\/\",\"showLikeShare\":\"1\",\"shareImage\":\"1\"}],\"ResultNum\":\"1\"})"; //用Jsonpath解析,然后用toString转成字符串 String tplDataString= JSONPath.read(json, "$.Result.DisplayData.resultData.tplData").toString(); System.out.println(tplDataString);
#输出结果
讯享网[{"resourceid":"5809","OriginQuery":"163.228.65.13","origipquery":"163.228.65.13","query":"163.228.65.13","shareImage":"1","origip":"163.228.65.13","showlamp":"1","data_source":"AE","tplt":"ip","titlecont":"IP地址查询","srcid":"5809","realurl":"http://www.ip138.com/","userip":"","location":"上海市 微软云","showLikeShare":"1"}]
4.Json与其他类型的转换
Json转成Map
#Json字符串转成Map String s="{resourceid=5809, OriginQuery=163.228.65.13, origipquery=163.228.65.13, query=163.228.65.13, shareImage=1, origip=163.228.65.13, showlamp=1, data_source=AE, tplt=ip, titlecont=IP地址查询, srcid=5809, realurl=http://www.ip138.com/, userip=, location=上海市 微软云, showLikeShare=1}"; #方法1 //先把字符串转成object JsonObject tplDataJson=JSONObject.paraseObject(s); //然后通过object.keyset()遍历键值加到map中,就实现了map的转化 Map<String,String> map=new HashMap<>(); for (String key : tplDataJson.keySet()) { map.put(key, tplDataJson.getString(key)); } System.out.println(map); #方法2 //直接用JSONObject.paraseObject()方法直接转 HashMap<String,Object> hashMap= JSONObject.parseObject(s,HashMap.class); System.out.println(hashMap);
#输出结果
讯享网#方法1 {resourceid=5809, OriginQuery=163.228.65.13, origipquery=163.228.65.13, query=163.228.65.13, shareImage=1, origip=163.228.65.13, showlamp=1, data_source=AE, tplt=ip, titlecont=IP地址查询, srcid=5809, realurl=http://www.ip138.com/, userip=, location=上海市 微软云, showLikeShare=1} #方法2 {resourceid=5809, OriginQuery=163.228.65.13, origipquery=163.228.65.13, query=163.228.65.13, shareImage=1, origip=163.228.65.13, showlamp=1, data_source=AE, tplt=ip, titlecont=IP地址查询, srcid=5809, realurl=http://www.ip138.com/, userip=, location=上海市 微软云, showLikeShare=1}
Map转成json
将map拼接为json字符串 //注意Json的格式:键一定有双引号,值不一定,值只有字符串的时候才有双引号 String reJson="{"; //遍历map中的每个键 for (String key : map.keySet()) { if(map.get(key) instanceof String) { //值是字符串的时候 //拼接键和值:“键”:"map.get(key)" reJson+=String.format("\"%s\":\"%s\",", key, map.get(key)); }else { //值不是字符串的时候,“键”:map.get(key) reJson+=String.format("\"%s\":%s,", key, map.get(key)); } } reJson=reJson.substring(0,reJson.length()-1)+"}"; System.out.println(reJson);
#输出结果
讯享网{"resourceid":"5809","OriginQuery":"163.228.65.13","origipquery":"163.228.65.13","query":"163.228.65.13","shareImage":"1","origip":"163.228.65.13","showlamp":"1","data_source":"AE","tplt":"ip","titlecont":"IP地址查询","srcid":"5809","realurl":"http://www.ip138.com/","userip":"","location":"上海市 微软云","showLikeShare":"1"}
Json转成其他类型
#Json转成JsonObject JSONObject jsonObject=JSONObject.parseObject(json字符串); #Json转成字符串 String s= (json字符串).toString(); #对象可以转成json字符串 //将对象的属性写成 键:值的格式。 WashMachine wm=new WashMachine(); //其他格式转成JSON格式的字符串 String s =JSON.toJSONString(wm);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55600.html