您的位置:首页 > 移动开发 > Objective-C

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

2016-01-27 18:33 821 查看
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"]

二、进阶模式

·难点就是转移字符  "  写成  \"  比如   "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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息