阿里的 特别方便:
你给的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)处理