有时保存在数据库的数据是一串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. iOS MVC, MVVM

    在iOS app里,如果用传统的MVC模式,Model层就是数据,View层就是Storyboard,nib文件或者构建UI的代码,Controller层就是ViewController,负责协调Mo ...

  2. css书写规范及特殊样式

    1.CSS书写顺序: (1)位置:position.top.right.z-index.display.float (2)大小:width.height.padding.margin (3)文字系列: ...

  3. BootStrap基本控件

    简介 BootStrap是一个用于快速开发web应用程序和网站的前端框架. BootStrap是基于HTML, CSS, JavaScript. BootStrap是由Twitter的Mark Ott ...

  4. php中Content-type说明

    'hqx' -> 'application/mac-binhex40','cpt' -> 'application/mac-compactpro','doc' -> 'applica ...

  5. .net 下载文件几种方式

    方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件. protected void Button1_Click(object sender, ...

  6. ArcGIS Engine 刷新问题

    link: http://www.cnblogs.com/Jingkunliu/archive/2013/01/10/2854710.html PartialRefresh方法是部分刷新,效率方面比单 ...

  7. RunLoop(官方文档翻译)

    循环运行 运行循环是与线程相关联的基本基础设施的一部分.一个运行循环是用于调度工作,并协调接收传入事件的事件处理循环.一个运行循环的目的是让你的线程繁忙时,有工作要做,把你的线程时有没有睡觉. 循环运 ...

  8. Action名称的搜索顺序

    假设当前的路径的URL是:http://StrutsDemo01/path1/path2/path3/test.action 步骤1.首先寻找命名空间(namespace)为 /path1/path2 ...

  9. spring的事物实现

    Spring的事物主要有三个接口 PlatformTransactionManager. 根据TransactionDefinition配置的事物信息创建事物 TransactionDefinitio ...

  10. js对象的继承以及公有私有属性的定义和读写

    最近想写一些js工具,有些方面需要用到面向对象的方法,比如继承父类属性和方法.通过私有化隐藏某些对象的属性等,因为没有系统的学习js,所以不知道怎么做,觉得很伤脑筋. 今天受到技术群里朋友的提示,并查 ...