有时保存在数据库的数据是一串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. [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果

    图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...

  2. 关于Linux:chmod和chown知识

    将vendor下的root权限递归更改为user命令:sudo chown -R user:user fujitsu 指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [- ...

  3. Python中出现的异常

    简单的写几种我知道的关于Python中出现的异常含义,希望大神批评指正,我只是学软件开发的菜鸟,前面的路还很长,我会努力学习! 什么是异常? 异常既是一个事件,该事件会在程序执行过程中发生,影响了程序 ...

  4. RapidXML 试用

    近半年来断断续续的封装一些SDK,在兼顾跨平台.易用性和高效率上还要顾及到对外dll的大小问题.由于之前解析SVG文件的用到了一个XML解析库xercesc,这个DLL实在巨大近4M,于是尝试用新的X ...

  5. NodeJS搭建HTTPS服务器

    [NodeJS搭建HTTPS服务器] http://cnodejs.org/topic/54745ac22804a0997d38b32d

  6. NetBIOS发包

    [NetBIOS发包] 1.拥有 LANA.Local Session Num即可发包. ncb_lsn,session号.指定发向哪. ncb_lana_num,lan-adapter号,指定用哪一 ...

  7. vim的共享系统剪贴板以及缩进相关问题

    http://www.cnblogs.com/end/archive/2012/06/01/2531147.html:reg 可以显示可用的寄存器,其中注意两个特殊的寄存器:"* 和 &qu ...

  8. 用node搭建静态文件服务器

    占个坑,写个node静态文件服务器

  9. cordova常用资料源

    cordova的中文资料https://github.com/CordovaCn/CordovaCn 官方文档: http://cordova.apache.org/docs/en/latest/ E ...

  10. Content is not allowed in prolog ---UTF-8 无bom