JSON字符串解析

有时保存在数据库的数据是一串json字符串,需要进行读取的时候就需要解析操作。

简单介绍两种:

1、net.sf.json.*

2、com.alibaba.fastjson.*

需要的包自行下载。

第一种使用方式:

import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;

仅为json字符串时:

                   String json = "{'first': 'one','next': 'two'}";

                    try {

                                  JSONObject jsonObject = JSONObject.fromObject(json);

                                  Iterator it=jsonObject.keys();

                                  while (it.hasNext()){

                                  System.out.println(jsonObject.get(it.next()));

                                  }

                                  } catch (JSONException e) {

                                  e.printStackTrace();

                                  }

json字符串数组解析:

String json = “[{‘first’: ‘one’,’next’: ‘two’},{‘first’: ‘three’,’next’: ‘fore’},{‘first’: ‘five’,’next’: ‘six’}]”;

                                  try {

                                  JSONArray jsonObject = JSONArray.fromObject(json);
                                  for (Iterator<Object> iterator = jsonObject.iterator(); iterator.hasNext();) {
                                      JSONObject job = (JSONObject) iterator.next(); 
                                      Iterator<Object> it=job.keys();
                                      while (it.hasNext()){
                                          System.out.println(job.get(it.next()));

                                          }
                                  }
                                  } catch (JSONException e) {

                                  e.printStackTrace();

                                  }

第二种使用方式:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;

仅为json字符串时:

ex: String json = “{“j1”:”json1”,”j2”:”2”,”j3”:false}”;

                           JSONObject job = JSONObject.parseObject(json );
                           System.out.println(job.get("j1"));

                           可用toString()来转换成字符串 但要注意job.get("")到的值为空时会报空指针异常
                                  if(job.get("j2")!=null){

                                    System.out.println(Integer.parseInt(job.get("j2").toString()));
                                  }

                          //获取Boolean类型数据

                           Boolean b=job.getBoolean(key)

                       或者 if(job.get("j3")!=null){
                                      String reCP=job.get("j3").toString();
                                      System.out.println(Boolean.getBoolean(j3));

                              }

在不知道key的情况下用job.keySet() 获取所有key值再读取;

ex:

                                        Set<String> s=job.keySet();
                                        for (String string : s) {
                                            System.out.println(job.get(string));
                                        }

json字符串数组解析:

        ex:  String json = "[{"j1":"json1","j2":"2","j3":false},{"j1":"json1","j2":"2","j3":false},{"j1":"json1","j2":"2","j3":false}]";

        JSONArray jarr = JSONArray.parseArray(insbuyschemeForm.getInsBuySchemeAwardList()); 
        for (Iterator<Object> iterator = jarr.iterator(); iterator.hasNext();) { 
          JSONObject job = (JSONObject) iterator.next();

          //此处获取方式和上面相同
        }

在不知道key的情况下用job.keySet() 获取所有key值再读取;

                            try {

                                      JSONArray jarr = JSONArray.parseArray(json);
                                      for (Iterator<Object> iterator = jarr.iterator(); iterator.hasNext();) {
                                        JSONObject job = (JSONObject) iterator.next();
                                        Set<String> s=job.keySet();
                                        for (String string : s) {
                                            System.out.println(job.get(string));
                                        }
                                      }

                                  } catch (JSONException e) {

                                  e.printStackTrace();

                                  }

两种包的解析都有很多方式,有兴趣可以看下其他方式。json字符串有很多组合,但是都是JSONObject 和JSONArray的组合,转换正确即可。
原文链接

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页