zoukankan      html  css  js  c++  java
  • 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的组合,转换正确即可。

  • 相关阅读:
    github系列:gh-pages
    js 传参乱码问题解决
    nvm安装
    如何创建.babelrc文件?
    Hello World
    python——字符串截取
    python读入写入中文名图片
    VGG16等keras预训练权重文件的下载及本地存放
    在Linux服务器非root权限下搭建TensorFlow框架(Anaconda)
    查看linux服务器上Tensorflow的版本和位置
  • 原文地址:https://www.cnblogs.com/Spirit612/p/6089094.html
Copyright © 2011-2022 走看看