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);
}
本文一句的写作思路:由简入繁
一、简单模式
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);
}
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android Google Map获取地理位置信息的方法
- Spark RDD API详解(一) Map和Reduce
- Python中map()函数浅析
- Android使用Google Map浅谈
- android上改变listView的选中颜色
- String.intern
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- PostgreSQL ERROR: invalid escape string 解决办法
- Erlang中的映射组Map详细介绍
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- c++中map的基本用法和嵌套用法实例分析
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- PHP STRING 陷阱原理说明
- c#中 String和string的区别介绍