JSON对象中的JSONObject和JSONArray以及与Map、String、数组的转化

本文一句的写作思路:由简入繁

一、简单模式

1、创建JSONObject对象

JSONObject json=new JSONObject();
json.put("name", "小明");
json.put("age", "10");
System.out.println(json.toString());

控制台打印:

{"age":"10","name":"小明"}

2、创建JSONArray对象 

JSONArray ja=new JSONArray();
ja.add("1");
ja.add("2");
ja.add("3");
ja.add(3,"4");
System.out.println(ja.toString());

控制台打印:

["1","2","3","4"]

3、转Map

import org.mortbay.util.ajax.JSON;
public static void main(String[] args) {
    String a = "{\"id\":2270863,\"login\":\"liubing19\",\"name\":\"刘冰\"}";
    Map map = (Map) JSON.parse(a);
    System.out.println(map.get("id"));
}

二、进阶模式

·难点就是转移字符  "  写成  \"  比如   "name"  就写成 \"name\",但是   {      [     ;   这些字符不需要转义,试试就知道了 

1、String类型的字符串转化为JSONObject对象

String str="{\"name\":\"小明\",\"年龄\":\"10\"}";
JSONObject json=JSONObject.fromObject(str);
System.out.println(json.toString());
System.out.println(json.get("name"));

控制台打印:

{"name":"小明","年龄":"10"}
小明

2、String类型的字符串转化为JSONArray对象

String str="[\"1\",\"2\",\"3\",\"4\"]";
JSONArray ja=JSONArray.fromObject(str);
System.out.println(ja.get(0));

控制台打印:

1

区分

String a[]={"1","2","3","4"};
System.out.println(a[0]);

三、实战应用测试

/**
	 * 测试将字符串转化为JSONArray
	 * 然后取出特定的值
	 * import net.sf.json.JSONArray;
	 * import net.sf.json.JSONObject;
	 * import org.apache.commons.lang.StringUtils;
	 */
	@Test
	public void test2(){
		String sCheck;//待检测字符串
		//null 场景
		String s0=null;
		//空串场景
		String s1="";
		//包含且只包含一个场景
		String s2="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";
		//不包含,但是有其他场景
		String s3="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"}]";
		//混合包含且包含正确的场景-靠后
		String s4="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"},{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";
		//混合包含且包含正确的场景-靠前
		String s5="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"},{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"}]";
		
		sCheck=s5;
		
		String result ="0";//名字1默认为0
		if(StringUtils.isNotBlank(sCheck)){//如果字符串不为空
			JSONArray jary=JSONArray.fromObject(sCheck);
			for(int i=0;i<jary.size();i++){
				JSONObject job=JSONObject.fromObject(jary.get(i).toString());
				if("type1".equals((String)job.get("type"))){
					System.out.println("预期的type值"+(String)job.get("type"));
					result=(String)job.get("group");//获取对应的名字1
					break;//循环终止
				}else{
					System.out.println("非预期的type值"+(String)job.get("type"));
				}
			}
		}
		
		System.out.println("名字1的值为:"+result);
		
		
		
	}

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐