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的组合,转换正确即可。
JSON字符串解析的更多相关文章
- Java基础-处理json字符串解析案例
Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- VBScript把json字符串解析成json对象的2个方法
这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...
- 复杂JSON字符串解析,可以少走弯路
发现一个好文章:装载至http://www.verejava.com/?id=17174254038220 package com.json5; import org.json.JSONArra ...
- Json字符串解析原理、超大json对象的解析
概述 附上完整的代码:https://pan.baidu.com/s/1dEDmGz3(入口类是Json)JSON:JavaScript 对象表示法(JavaScript Object Notatio ...
- JSON字符串解析成JSON数据格式
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- 基于开源库jsoncpp的json字符串解析
json(JavaScript Object Notation)是一种轻量级高效数据交换格式.相比于XML,其更加简洁,解析更加方便.在实习期间,我负责的程序模块,多次使用到json进行数据传输.由于 ...
- C#将json字符串解析成对象
首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端 //这是一个以id,email,age的json字符串 var jdata="[{\"id\&quo ...
- 微信获取用户列表的json字符串解析
今天学习微信遇到一个json的解析,但是因为自己的模型思维和思考能力很差一直困扰最后经过询问解决的问题,其实问题很简单总结起来就是json的解析: 注释:今天主要是讲怎样解析json的所以其他方法就只 ...
随机推荐
- 打造一个有感觉的vim(四)
今天要介绍的VIM插件的名字叫做surround,这个插件的主要作用是将一个VIM的tex-objects(文本对象)添加或者取消包裹(单引号,双引号,XML标签等等)下载地址如下:https://g ...
- nagios二次开发(四)---nagios监控原理和nagios架构简介
nagios监控原理 下面根据上面摘自网络的原理图对nagios的监控原理进行一下简单的说明: 1.nagios通过nsca进行被动监控.那么什么是被动监控呢?被动监测:就是指由被监测的服务器主动上传 ...
- jQuery multiselect的使用
1,下载插件 https://github.com/ehynds/jquery-ui-multiselect-widget
- sscanf与正则表达式(转)
今天翻google reader的时候看到这样一篇文章,介绍的是sscanf的高级用法.直到今天我才知道sscanf是可以直接用正则表达式的,惭愧. 在msdn中sscanf的声明如下 int ssc ...
- ACM算法模板
旧版模板下载链接: here 新版的模板目前不提供电子版,正在抽时间做一些修正以及添加一些新内容. 新模板如有需要纸质版的,可以自付打印费进行打印.购买链接:https://weidian.com/i ...
- c++ 对象的内存布局
之前介绍过了普通对象比如系统自带的int等对象的对齐方式,在学习类型转换的时候遇到了自定义类型的继承体系中的downcast与upcast. 于是顺藤摸瓜,摸到了这里.发现还是 陈皓的博客里面写的最早 ...
- less预处理的好处,补充关于之前发表的rem单位的运用于计算
我认识的less 优点:优雅,好用,简单,可复用性强, 缺点:less并其实不能为我们减少沉余css代码,还是要靠自己的CSS基础去判断哪些是沉余代码或者是可以合并的代码 之前发表的一篇文章一看就懂得 ...
- AngularJs + Web API 页面开发(一)
AngularJS这个JS框架是个神马东东我也不太清楚,我也是初学者~~ AngularJS适用于single page App,单页面程序都是局部刷新的,这一点和Ajax有第一的区别,因为使用Aja ...
- 使用OPENROWSET、Microsoft.ACE.OLEDB实现大数据量的高效导入
首先说明使用的环境是:java和Sqlserver. 最近公司需要进行大数据量的导入操作.原来使用的是Apache POI,虽然可以实现功能,但是因为逻辑处理中需要进行许多校验,处理速度太慢,使用多线 ...
- getWinSystemIcon
#include <QtGui/QImage>#include <QtGui/QPixmap>void getSystemIcon(const chConstStringA&a ...