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

本文通过实例介绍如何使用Java将Stringlistarray转换为JSON格式,包括使用多种第三方库实现JSONObject和JSONArray的创建、字符串转换及从JSON中提取特定值。

引用自:http://blog.youkuaiyun.com/bestcxx/article/details/50595464

String list array 转化为 json,利用的包如下:

commons-beanutils.jar

commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

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

一、简单模式

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]);


三、实战应用测试

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.      * 测试将字符串转化为JSONArray 
  3.      * 然后取出特定的值 
  4.      * import net.sf.json.JSONArray; 
  5.      * import net.sf.json.JSONObject; 
  6.      * import org.apache.commons.lang.StringUtils; 
  7.      */  
  8.     @Test  
  9.     public void test2(){  
  10.         String sCheck;//待检测字符串  
  11.         //null 场景  
  12.         String s0=null;  
  13.         //空串场景  
  14.         String s1="";  
  15.         //包含且只包含一个场景  
  16.         String s2="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";  
  17.         //不包含,但是有其他场景  
  18.         String s3="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"}]";  
  19.         //混合包含且包含正确的场景-靠后  
  20.         String s4="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"},{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";  
  21.         //混合包含且包含正确的场景-靠前  
  22.         String s5="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"},{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快参加吧!\"}]";  
  23.           
  24.         sCheck=s5;  
  25.           
  26.         String result ="0";//名字1默认为0  
  27.         if(StringUtils.isNotBlank(sCheck)){//如果字符串不为空  
  28.             JSONArray jary=JSONArray.fromObject(sCheck);  
  29.             for(int i=0;i<jary.size();i++){  
  30.                 JSONObject job=JSONObject.fromObject(jary.get(i).toString());  
  31.                 if("type1".equals((String)job.get("type"))){  
  32.                     System.out.println("预期的type值"+(String)job.get("type"));  
  33.                     result=(String)job.get("group");//获取对应的名字1  
  34.                     break;//循环终止  
  35.                 }else{  
  36.                     System.out.println("非预期的type值"+(String)job.get("type"));  
  37.                 }  
  38.             }  
  39.         }  
  40.           
  41.         System.out.println("名字1的值为:"+result);  
  42.           
  43.           
  44.           
  45.     }  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值