JSON小结【json-lib】
javabean:Address
package com.baebae.model;
public class Address
{
private String city;
private String district;
private String street;
private int no;
getter/setter()...
}
JAVA--JSON互相转换:
【1】JAVA——>JSON
/**
* <1> JAVA-->JSON
* 单个对象Object-->JSONObject
* 集合List/Array/Set----->JSONArray
*/
@Test
public void testObj2JSON() throws InterruptedException {
// 1.bean---->json
Address addr = new Address();
addr.setCity("北京");
addr.setDistrict("清河");
addr.setStreet("安宁庄东路");
addr.setNo(200);
JSONObject jsonObj = JSONObject.fromObject(addr);
System.err.println("____________jsonObj_______________");
System.out.println(jsonObj);
// 1.集合-->JSONArray
Set<Address> set = new HashSet<Address>();
Address[] addrArray = new Address[100];
List<Address> list = new ArrayList<Address>();
for(int i=0;i<10;i++){
Address address = new Address();
address.setCity("北京");
address.setDistrict("清河");
address.setStreet("安宁庄东路"+i+"号");
address.setNo(200+i);
list.add(address);
addrArray[i]=address;
set.add(address);
}
// 这里不能用JSONObject.fromObject(collection)
JSONArray jsonList = JSONArray.fromObject(list);
JSONArray jsonArray = JSONArray.fromObject(addrArray);
JSONArray jsonSet = JSONArray.fromObject(set);
// 打印结果
Thread.sleep(3000);
System.err.println("____________jsonList_______________");
System.out.println(jsonList);
Thread.sleep(3000);
System.err.println("_____________jsonArray______________");
System.out.println(jsonArray);
Thread.sleep(3000);
System.err.println("______________jsonSet_____________");
System.out.println(jsonSet);
Thread.sleep(3000);
}
打印结果:
____________jsonObj_______________
{"city":"北京","district":"清河","no":200,"street":"安宁庄东路"}
____________jsonList_______________
[{"city":"北京","district":"清河","no":200,"street":"安宁庄东路0号"},{"city":"北京","district":"清河","no":201,"street":"安宁庄东路1号"},{"city":"北京","district":"清河","no":202,"street":"安宁庄东路2号"},{"city":"北京","district":"清河","no":203,"street":"安宁庄东路3号"},{"city":"北京","district":"清河","no":204,"street":"安宁庄东路4号"},{"city":"北京","district":"清河","no":205,"street":"安宁庄东路5号"},{"city":"北京","district":"清河","no":206,"street":"安宁庄东路6号"},{"city":"北京","district":"清河","no":207,"street":"安宁庄东路7号"},{"city":"北京","district":"清河","no":208,"street":"安宁庄东路8号"},{"city":"北京","district":"清河","no":209,"street":"安宁庄东路9号"}]
_____________jsonArray______________
[{"city":"北京","district":"清河","no":200,"street":"安宁庄东路0号"},{"city":"北京","district":"清河","no":201,"street":"安宁庄东路1号"},{"city":"北京","district":"清河","no":202,"street":"安宁庄东路2号"},{"city":"北京","district":"清河","no":203,"street":"安宁庄东路3号"},{"city":"北京","district":"清河","no":204,"street":"安宁庄东路4号"},{"city":"北京","district":"清河","no":205,"street":"安宁庄东路5号"},{"city":"北京","district":"清河","no":206,"street":"安宁庄东路6号"},{"city":"北京","district":"清河","no":207,"street":"安宁庄东路7号"},{"city":"北京","district":"清河","no":208,"street":"安宁庄东路8号"},{"city":"北京","district":"清河","no":209,"street":"安宁庄东路9号"},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]
______________jsonSet_____________
[{"city":"北京","district":"清河","no":207,"street":"安宁庄东路7号"},{"city":"北京","district":"清河","no":202,"street":"安宁庄东路2号"},{"city":"北京","district":"清河","no":200,"street":"安宁庄东路0号"},{"city":"北京","district":"清河","no":204,"street":"安宁庄东路4号"},{"city":"北京","district":"清河","no":205,"street":"安宁庄东路5号"},{"city":"北京","district":"清河","no":208,"street":"安宁庄东路8号"},{"city":"北京","district":"清河","no":209,"street":"安宁庄东路9号"},{"city":"北京","district":"清河","no":203,"street":"安宁庄东路3号"},{"city":"北京","district":"清河","no":206,"street":"安宁庄东路6号"},{"city":"北京","district":"清河","no":201,"street":"安宁庄东路1号"}]
--------------------------------------------------------------------------------
【2】JSON---->JAVA
/**
* <2> JSON-->JAVA
* 1.如果字段名有错无法匹配,会发出警告;属性得到是null.
* 2.转换:
* ->Object
* <1> 字符串封装成JSON 对象:【JSONObject.fromObject(jsonStr)】
* <2> JSON对象转换成Object:【(Address) JSONObject.toBean(jsonObject, Address.class)】
* ->Collection
* <1> 字符串封装成JSONArray 对象:【JSONArray.fromObject(jsonArrayStr)】
* <2> JSONArray对象转换成Java集合:【(List<Address>)JSONArray.toCollection(jsonArray, Address.class)】
*/
@Test
public void testJson2Java() throws InterruptedException {
// 1.JSON object
String jsonStr = "{\"city\":\"北京\",\"district\":\"清河\",\"street\":\"安宁庄东路南口\",\"no\":500}";
// 3.JSONArray
String jsonArrayStr = "[{\"city\":\"北京\",\"district\":\"清河\",\"street\":\"安宁庄东路南口\",\"no\":500},{\"city\":\"北京\",\"district\":\"上地\",\"street\":\"安宁庄东路\",\"no\":300}]";
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
JSONArray jsonArray = JSONArray.fromObject(jsonArrayStr);
// JSONObject.toBean(jasonObject,Class): Bean;
Address address = (Address) JSONObject.toBean(jsonObject, Address.class);
List<Address> list = (List<Address>)JSONArray.toCollection(jsonArray, Address.class);
// 1.输出Object
Thread.sleep(1000);
System.out.println("District:"+address.getDistrict());
// 2.输出Array
Thread.sleep(1000);
for(Address addr:list){
System.out.println(addr.getCity()+"\t"+addr.getDistrict()+"\t"+addr.getStreet()+"\t"+addr.getNo());
}
}
打印结果:
District:清河
北京 清河 安宁庄东路南口 500
北京 上地 安宁庄东路 300
【总结】:
JSON————>JAVA:
->Object
<1> 字符串封装成JSON 对象:【JSONObject.fromObject(jsonStr)】
<2> JSON对象转换成Object:【(Address) JSONObject.toBean(jsonObject, Address.class)】
->Collection
<1> 字符串封装成JSONArray 对象:【JSONArray.fromObject(jsonArrayStr)】
<2> JSONArray对象转换成Java集合:【(List<Address>)JSONArray.toCollection(jsonArray, Address.class)】
JAVA————>JSON:
Object:【JSONObject.fromObject(addr)】
Collection:【JSONArray.fromObject(list)】
参考资料:
1.官方网站:http://sourceforge.net/projects/json-lib
2.所需jar包:
commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
JSON小结【json-lib】的更多相关文章
- gitlab无法push或clone的错误:JWT::DecodeError (Nil JSON web token): lib/gitlab/workhorse.rb:120:in `verify_api_request!'
使用源码安装的方式升级gitlib7.14到gitlab-8.13.5中文版,然后push的时候报错: 错误信息如下: Started GET "/gitlab/hushizhi/gitla ...
- 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
原文链接: Deep-dive into .NET Core primitives: deps.json, runtimeconfig.json, and dll's 作者: Nate McMaste ...
- C++通过jsoncpp类库读写JSON文件-json用法详解
介绍: JSON 是常用的数据的一种格式,各个语言或多或少都会用的JSON格式. JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择. ...
- 深入 .NET Core 基础 - 1:deps.json, runtimeconfig.json 以及 dll
深入 .NET Core 基础:deps.json, runtimeconfig.json 以及 dll 原文地址:https://natemcmaster.com/blog/2017/12/21/n ...
- python: json模块 --JSON编码和解码
json 源代码: Lib/json/__init__.py json.dump() import json numbers = [1, 2, 3, 4] with open('linshi.py', ...
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- Newtonsoft.Json(Json.net)的基本用法
Newtonsoft.Json(Json.net)的基本用法 其它资料 JSON详解 添加引用: 使用NuGet,命令:install-package Newtonsoft.Json 实体类: pub ...
- 使用 ServiceStack.Text 序列化 json 比Json.net更快
本节将介绍如何使用ServiceStack.Text 来完成高性能序列化和反序列化操作. 在上章构建高性能ASP.NET应用的几点建议 中提到使用高性能类库,有关于JSON序列化的讨论. 在诊断web ...
- js fs read json 文件json字符串无法解析
读取 xxx.txt(里面就是一段 json)-> JSON.parse( fs.readFileSync( xxx.txt ) ) -> 报 SyntaxError: unexpecte ...
随机推荐
- mycat的privileges标签
参考https://blog.csdn.net/tornadojava/article/details/54948662 privileges标签 对用户的 schema以及表进行精细化的DML权限控 ...
- python简单实现论文查重(软工第一次项目作业)
前言 软件工程 https://edu.cnblogs.com/campus/gdgy/informationsecurity1812 作业要求 https://edu.cnblogs.com/cam ...
- 【故障公告】博客系统升级到 .NET 5.0 引发的故障
昨天晚上我们将博客系统从 .NET Core 3.1 升级到了 .NET 5.0 ,本来是一次很有信心的升级,但没有想到在今天下午访问高峰时竟然出现了故障,大量请求访问速度变慢或者因为下面的数据库连接 ...
- WPF开源控件扩展库 - MaterialDesignExtensions
Material Design Extensions 在WPF开源控件库 Material Design in XAML Toolkit(本站介绍:链接)的基础上进行了控件扩展和特性新增.本开源项目中 ...
- NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
错误信息: NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 错误背景:微服务不通过统一的nginx端口访问,能够正常请求接口并获取对应的响应.但是通过ngi ...
- centos8使用hostnamectl管理主机名称
一,查看hostnamectl所属的包: [root@yjweb ~]# whereis hostnamectl hostnamectl: /usr/bin/hostnamectl /usr/shar ...
- 简述 QPS、TPS、并发用户数、吞吐量关系
1. QPS QPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即 ...
- JavaSE学习笔记03流程控制
Java流程控制 1.顺序结构 java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句往下执行. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构. 2. 选择结构 ...
- 【应用服务 App Service】发布到Azure上的应用显示时间不是本地时间的问题,修改应用服务的默认时区
问题情形 应用程序发布到App Service后,时间显示不是北京时间,默认情况为UTC时间,比中国时间晚 8 个小时. 详细日志 无 问题原因 Azure 上所有的服务时间都采用了 UTC 时间. ...
- poj2187 Beauty Contest (凸包 + 旋转卡壳)
Beauty Contest Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 38349 Accepted: 11851 ...