字符串转换成JSON的两种常用方法

来源:互联网 发布:qt access数据库 2003 编辑:程序博客网 时间:2024/06/05 03:14


阿里的 特别方便:
你给的json串是数组,要用 JSON.parseArray 转换成数组来获取,
JSONArray json = JSON.parseArray(str);
你给的是json串是字符串,要用
JSONObject jso = JSON.parseObject(json)处理


--------------------------------------------------------------------------

第一个,比较正常的,在阿里jar之前:

package com.lyt.test.json;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class StringToJson {public static void main(String[] args) {JSONArray a = new JSONArray();a.add("{'id':'1','companyName':'美分期1'}");a.add("{'id':'2','companyName':'美分期2'}");a.add("{'id':'3','companyName':'美分期3'}");System.out.println(a.toString());String str = "[{'id':'1','companyName':'美分期1'},{'id':'2','companyName':'美分期2'},{'id':'3','companyName':'美分期3'}]" ;  // 一个未转化的字符串JSONArray json = JSONArray.fromObject(str); // 首先把字符串转成 JSONArray  对象if(json.size()>0){  for(int i=0;i<json.size();i++){    JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象    System.out.println(job.get("id")+"=" + job.get("companyName")) ;  // 得到 每个对象中的属性值  }}}}比如Controller中封装String id = request.getParameter("id");AppEdition appEdition = appEditionService.findById(Integer.valueOf(id));model.addAttribute("appEdition", appEdition);ChannelAppIdentification.Android.getName();ChannelAppIdentification.MILLET_MALL.getName();// 数据库中读取出来的字段是这样的:[{'channelStore':'1','path':'美分期1'},{'channelStore':'2','path':'美分期2'},{'channelStore':'3','path':'美分期3'}]JSONArray json = JSONArray.fromObject(appEdition.getAppPath()); // 首先把字符串转成 JSONArray  对象model.addAttribute("json", json);页面获取:<c:forEach items="${json }" var="json"><tr><td style="width: 150px;border: solid 1px #cccccc;">${json.channelStore }</td><td style="border: solid 1px #cccccc;border-left: 0;width: 400px;">${json.path }</td></tr></c:forEach>


这个是一个小demo,可以把数据放入到model中 然后在jso页面接收并使用

第二个就是利用阿里巴巴的jar来进行转换

package org.com.lyt.jsonutil;    import com.alibaba.fastjson.JSON;  import com.alibaba.fastjson.JSONArray;  import com.alibaba.fastjson.JSONObject;    /**   * @Author:liyintao   * @Description:   * @Date:下午 5:50 2017/9/12 0012.   */  public class StringToFastJson {      public static void main(String[] args) {          new StringToFastJson().stringTofastJson1();      }      public static void stringTofastJson() {          String json = "{\"name\":\"刘德华\",\"age\":35,\"some\":[{\"k1\":\"v1\",\"k2\":\"v2\"},{\"k3\":\"v3\",\"k4\":\"v4\"}]}";          JSONObject jso = JSON.parseObject(json);//json字符串转换成jsonobject对象          System.out.println("初始jsonObject:\n"+jso+"\n");          // [{"k1":"v1","k2":"v2"},{"k3":"v3","k4":"v4"}]          JSONArray jsarr = jso.getJSONArray("some");//jsonobject对象取得some对应的jsonarray数组          System.out.println("jsonObject里面的jsonarray:\n"+jsarr+"\n");          JSONObject ao = jsarr.getJSONObject(0);//jsonarray对象通过getjsonobjext(index)方法取得数组里面的jsonobject对象          System.out.println("jsonObject里面的jsonarray里面的第一个jsonobject:\n"+ao+"\n");          String vString = ao.getString("k1");//jsonobject对象通过key直接取得String的值          System.out.println("jsonObject里面的jsonarray里面的第一个jsonobject里的键值对对k1取值:\n"+vString+"\n");      }        public static void stringTofastJson1() {          String str = "[{'id':'1','companyName':'美分期1'},{'id':'2','companyName':'美分期2'},{'id':'3','companyName':'美分期3'}]" ;  // 一个未转化的字符串          // json字符串转换成JSONArray数组          JSONArray json = JSON.parseArray(str);          System.out.println("初始jsonObject:\n"+json+"\n");          if(json.size()>0){              for(int i=0;i<json.size();i++){                  JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象                  System.out.println(job.get("id")+"=" + job.get("companyName")) ;  // 得到 每个对象中的属性值              }          }      }    }


阿里的 特别方便:你给的json串是数组,要用 JSON.parseArray 转换成数组来获取,JSONArray json = JSON.parseArray(str);你给的是json串是字符串,要用JSONObject jso = JSON.parseObject(json)处理


原创粉丝点击