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


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


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值