JSON对象中的JSONObject和JSONArray以及与Map、String、数组的转化
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);
}
更多推荐
所有评论(0)