有时保存在数据库的数据是一串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的组合,转换正确即可。

JSON字符串解析的更多相关文章

  1. Java基础-处理json字符串解析案例

    Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...

  2. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

  3. VBScript把json字符串解析成json对象的2个方法

    这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...

  4. 复杂JSON字符串解析,可以少走弯路

    发现一个好文章:装载至http://www.verejava.com/?id=17174254038220 package com.json5;    import org.json.JSONArra ...

  5. Json字符串解析原理、超大json对象的解析

    概述 附上完整的代码:https://pan.baidu.com/s/1dEDmGz3(入口类是Json)JSON:JavaScript 对象表示法(JavaScript Object Notatio ...

  6. JSON字符串解析成JSON数据格式

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  7. 基于开源库jsoncpp的json字符串解析

    json(JavaScript Object Notation)是一种轻量级高效数据交换格式.相比于XML,其更加简洁,解析更加方便.在实习期间,我负责的程序模块,多次使用到json进行数据传输.由于 ...

  8. C#将json字符串解析成对象

    首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端   //这是一个以id,email,age的json字符串   var jdata="[{\"id\&quo ...

  9. 微信获取用户列表的json字符串解析

    今天学习微信遇到一个json的解析,但是因为自己的模型思维和思考能力很差一直困扰最后经过询问解决的问题,其实问题很简单总结起来就是json的解析: 注释:今天主要是讲怎样解析json的所以其他方法就只 ...

随机推荐

  1. JavaScript 正则表达式的应用实例

    都是自己实例记录,不断更新中.... 1.字符串找出所有匹配的邮箱并替换 <html> <body> <script type="text/javascript ...

  2. 已解决: 已引发: "无法加载 DLL“opencv_core2410”: 找不到指定的模块。

    之前是win7 32位系统,程序运行没有问题:换了64位 win7后,系统就找不到opencv相关库了,网上各种查询解决方法,感觉不太可行,或者很麻烦...多次试验后,找到方便关键的解决方案如下: 计 ...

  3. hdu4607 Park Visit(树的直径)

    Park Visit Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. spring的helloworld

    前两天接到了支付宝的电话面试,问了我好多java中的知识,知识姐不看java好多年,这猛一问知道的东西还真是不少啊.趁着现在精力还算是比较旺盛,再把spring重新理一理,为下一次面试做准备. 学习每 ...

  5. MS SQLSERVER 存儲過程與緩存

    提升SQL Server最具性能的一个方面就是存储过程,SQL Server具备执行计划的缓存功能,以便计划重用.SQL Server2000增强了ad-hoc执行计划的缓存功能,就处理存储过程上性能 ...

  6. freemarker

    一.下载freemarker的jar包,到maven仓库下载 二.引入jar包,参考freemarker的手册写代码 1.Test.ftlh <!DOCTYPE html> <htm ...

  7. 关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题

    2016年2月14日以后打包上传AppStore会发现出现如下的问题: 导致问题的原因是:下边这个证书过期了 以下是苹果官方给出的回应: Thanks for bringing this to the ...

  8. myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理

    信用公司框架,不够熟悉. 在完成嗲点登录后,写动态页面是遇到,了问题:myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理. 最后大神给看,在接口实现重写的方法里返回 ...

  9. 放假回来啦!!小技能:一个div不给width,怎么让它居中捏?`(*∩_∩*)′

    答案是:这个div没有浮动的话,就用text-align: center; 有的话...我也不知道了

  10. flexbox布局

    一.侧轴对齐伸缩项目--align-items 它充许调整伸缩项目在侧轴(也就是y轴)的对齐方式,主要包括以下几个值: flex-start/baseline:伸缩项目在侧轴起点边的外边距紧靠住该行在 ...