json字符串转换为JSONObject和JSONArray

 

json字符串转换为JSONObject和JSONArray

http://blog.csdn.net/taxiangwuhen/article/details/7849711#comments

一.下载json 具体到http://www.json.org/上找java-json下载,并把其放到项目源代码中,这样就可以引用其类对象了

二.具体转化过程

//JSONObject

 String jsonMessage = "{\"语文\":\"88\",\"数学\":\"78\",\"计算机\":\"99\"}";
  String value1 = null;
  try
  {
   //将字符串转换成jsonObject对象
   JSONObject myJsonObject = new JSONObject(jsonMessage);
   //获取对应的值
   value1 = myJsonObject.getString("数学");
  }
  catch (JSONException e)
  {
  }
  
  System.out.println("value1="+value1);

//JSONArray

jsonMessage = "[{'num':'成绩', '外语':88, '历史':65, '地理':99, 'object':{'aaa':'1111','bbb':'2222','cccc':'3333'}}," +
           "{'num':'兴趣', '外语':28, '历史':45, '地理':19, 'object':{'aaa':'11a11','bbb':'2222','cccc':'3333'}}," +
           "{'num':'爱好', '外语':48, '历史':62, '地理':39, 'object':{'aaa':'11c11','bbb':'2222','cccc':'3333'}}]";
  JSONArray myJsonArray;
  try
  {
   myJsonArray = new JSONArray(jsonMessage);
   
   for(int i=0 ; i < myJsonArray.length() ;i++)
   {
    //获取每一个JsonObject对象
    JSONObject myjObject = myJsonArray.getJSONObject(i);
    
    //获取每一个对象中的值
    String numString = myjObject.getString("num");
    int englishScore = myjObject.getInt("外语");
    int historyScore = myjObject.getInt("历史");
    int geographyScore = myjObject.getInt("地理");
    //获取数组中对象的对象
    JSONObject myjObject2 = myjObject.getJSONObject("object");
    String aaaString = myjObject2.getString("aaa");
    System.out.println("aaaString="+aaaString);
    
    System.out.println("numString="+numString);
    System.out.println("englishScore="+englishScore);
    System.out.println("historyScore="+historyScore);
    System.out.println("geographyScore="+geographyScore);
   }
  }
  catch (JSONException e)
  {
  }


JSONArray遍历

从json数组中得到相应java数组,如果要获取java数组中的元素,只需要遍历该数组。

复制代码
 1   /**
 2       * 从json数组中得到相应java数组
 3       * JSONArray下的toArray()方法的使用
 4       * @param str
 5       * @return
 6       */
 7       public static Object[] getJsonToArray(String str) {
 8           JSONArray jsonArray = JSONArray.fromObject(str);
 9           return jsonArray.toArray();
10       }
11 
12    public static void main(String[] args) {        
13         JSONArray jsonStrs = new JSONArray();
14         jsonStrs.add(0, "cat");
15         jsonStrs.add(1, "dog");
16         jsonStrs.add(2, "bird");
17         jsonStrs.add(3, "duck");
18         
19         Object[] obj=getJsonToArray(jsonStrs.toString());
20         for(int i=0;i<obj.length;i++){
21               System.out.println(obj[i]);
22         }
23     }
复制代码

从json数组中得到java数组,可以对该数组进行转化,如将JSONArray转化为String型、Long型、Double型、Integer型、Date型等等。 
分别采用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。 
同样,如果要获取java数组中的元素,只需要遍历该数组。

复制代码
 1      /**
 2       * 将json数组转化为Long型
 3       * @param str
 4       * @return
 5       */
 6      public static Long[] getJsonToLongArray(String str) {
 7           JSONArray jsonArray = JSONArray.fromObject(str);
 8           Long[] arr=new Long[jsonArray.size()];
 9           for(int i=0;i<jsonArray.size();i++){
10               arr[i]=jsonArray.getLong(i);
11               System.out.println(arr[i]);
12           }
13           return arr;
14     }
15      /**
16       * 将json数组转化为String型
17       * @param str
18       * @return
19       */
20      public static String[] getJsonToStringArray(String str) {
21           JSONArray jsonArray = JSONArray.fromObject(str);
22           String[] arr=new String[jsonArray.size()];
23           for(int i=0;i<jsonArray.size();i++){
24               arr[i]=jsonArray.getString(i);
25               System.out.println(arr[i]);
26           }
27           return arr;
28     }
29      /**
30       * 将json数组转化为Double型
31       * @param str
32       * @return
33       */
34      public static Double[] getJsonToDoubleArray(String str) {
35           JSONArray jsonArray = JSONArray.fromObject(str);
36           Double[] arr=new Double[jsonArray.size()];
37           for(int i=0;i<jsonArray.size();i++){
38               arr[i]=jsonArray.getDouble(i);
39           }
40           return arr;
41     }
42      /**
43       * 将json数组转化为Date型
44       * @param str
45       * @return
46       */
47      public static Date[] getJsonToDateArray(String jsonString) {
48 
49           JSONArray jsonArray = JSONArray.fromObject(jsonString);
50           Date[] dateArray = new Date[jsonArray.size()];
51           String dateString;
52           Date date;
53           SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
54           for (int i = 0; i < jsonArray.size(); i++) {
55               dateString = jsonArray.getString(i);
56               try {
57                   date=sdf.parse(dateString);
58                   dateArray[i] = date;
59               } catch (Exception e) {
60                   e.printStackTrace();
61               }
62           }
63           return dateArray;
64     }
65 
66 
67  public static void main(String[] args) {
68             
69         JSONArray jsonLongs = new JSONArray();
70         jsonLongs.add(0, "111");
71         jsonLongs.add(1, "222.25");
72         jsonLongs.add(2, new Long(333));
73         jsonLongs.add(3, 444);
74         
75         Long[] log=getJsonToLongArray(jsonLongs.toString());
76         for(int i=0;i<log.length;i++){
77             System.out.println(log[i]);
78         }
79         
80         JSONArray jsonStrs = new JSONArray();
81         jsonStrs.add(0, "2011-01-01");
82         jsonStrs.add(1, "2011-01-03");
83         jsonStrs.add(2, "2011-01-04 11:11:11");
84         
85         Date[] d=getJsonToDateArray(jsonStrs.toString());        
86         for(int i=0;i<d.length;i++){
87             System.out.println(d[i]);
88         }
89     }
90   /*结果如下:
91      * 111
92      * 222
93      * 333
94      * 444
95      * 
96      * Sat Jan 01 00:00:00 CST 2011
97      * Mon Jan 03 00:00:00 CST 2011
98      * Tue Jan 04 00:00:00 CST 2011
99      */

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值