java关于json的一些问题
今天重写代码的时候,发现了一个异常:java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntime
问题很快就解决了,是因为少了common-lang-2.6.jar。为什么会少了common-lang-2.6.jar,这是因为前一阵子想用 common-lang3包替换common-lang-2.6.jar。
百度了下,发现net.sf.json需要这么多:
1.commons-beanutils-1.9.1.jar
2.commons-collections-3.2.1.jar
3.commons-lang-2.6.jar
4.commons-logging-1.2.jar
5.ezmorph-1.0.6.jar
首先太麻烦了!其次commons-lang的最近一次更新是2011年。
从2011年之后,其它各种jsond实现包有许多更新(或者新出现),譬如:
- google的gson
- 阿里的 fastJson
- jackson
- jackSon的,主要是做json和object的映射,使用起来有点麻烦,如果不想做对象映射,那么可以不怎么考虑,当然效率也不错
- fastJson,总体不错,有许多简单的静态类实现
- gson,也还可以。
网络上,不怎么建议用net.sf.json,因为效率,没有确认过。以前的项目有用,估计是因为生成JSONobject,JSONArray比较方便。
---
考虑到各种因素,我已经不再让小组成员使用net.sf.json,可以使用fastjson和gson来替代,一个项目尽量使用一个json方案。
以后,需要使用object生成JSONArray的时候,只需要如下即可(红色字体部分):
package study.base.json.jackson; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.serializer.SerializerFeature; public class TestJackSon { public static void main(String[] args) { List<Map<String, Object>> lm = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 3; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("no", Integer.valueOf(i));
map.put("age", 12);
map.put("name", "luzhifei");
lm.add(map);
}
JSONArray o = (JSONArray) JSONArray.toJSON(lm); System.out.println(o.toString(SerializerFeature.PrettyFormat)); }
}
结果如下:
[
{
"name":"luzhifei",
"no":0,
"age":12
},
{
"name":"luzhifei",
"no":1,
"age":12
},
{
"name":"luzhifei",
"no":2,
"age":12
}
]
java关于json的一些问题的更多相关文章
- Java集合 Json集合之间的转换
1. Java集合转换成Json集合 关键类:JSONArray jsonArray = JSONArray.fromObject(Object obj); 使用说明:将Java集合对象直接传进JSO ...
- Java对象 json之间的转换(json-lib)
在这里主要简单的介绍一下,如何使用json-lib这个工具包来完成Java对象(或集合)与json对象(或集合)之间的转换~ 1. Java对象转换成json(既创建json) 关键类:JSONObj ...
- Java 的 JSON 开源类库选择比较(zz)
在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April ...
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
做一个map和字符串的转换,需要导入这些jar包,这是最基本的一些jar包. 经过多方尝试得出结论入下: 首先导入基本包:json-lib-2.2.3-jdk15.jar 如果没有这个jar包,程序是 ...
- java系列--JSON数据的处理
http://blog.csdn.net/qh_java/article/details/38610599 http://www.cnblogs.com/lanxuezaipiao/archive/2 ...
- Java之JSON数据
特别注意:使用JSON前需要导包 操作步骤地址:http://blog.csdn.net/baidu_37107022/article/details/70876993 1.定义 JSON(JavaS ...
- JSON以及Java转换JSON的方法(前后端常用处理方法)
)); map.put("arr", new String[] { "a", "b" }); map.put("func" ...
- java处理json与对象的转化 递归
整个类是一个case,总结了我在使用java处理json的时候遇到的问题,还有级联关系的对象如何遍历,json和对象之间的转换! 对于对象json转换中遇到的问题我参考了一篇博客,http://blo ...
- Java JWT: JSON Web Token
Java JWT: JSON Web Token for Java and Android JJWT aims to be the easiest to use and understand libr ...
- Java解析json字符串和json数组
Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){ Map ...
随机推荐
- Region-区域(默认和新增)适配器
Prism内置了几个区域适配器 ContentControlRegionAdapter ItemsControlRegionAdapter SelectorRegionAdapter ComboBox ...
- IIncrementalGenerator 解析 ValueTuple 的定义
本文将告诉大家如何在分析器里面解析代码里面对于 ValueTuple 的定义,包括如何获取 ValueTuple 里面的 Item 的类型和命名 开始之前先创建一个用来被分析的项目,在这个项目里面定义 ...
- WPF 调试依赖属性变更方法
本文告诉大家如何调试 WPF 的某个依赖属性被变更的方法 在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的 对依赖属性添加通知 ...
- Django之路由层、视图层、模板层介绍
一.Django请求生命周期 1.路由层urls.py Django 1.11版本 URLConf官方文档 1.1 urls.py配置基本格式 from django.conf.urls import ...
- 《Effective C++》第三版-0. 导读(Introduction)
目录 术语(Terminology) 命名习惯(Naming Conventions) 关于线程(Threading Consideration) TR1和Boost 术语(Terminology) ...
- iptables命令详解
安装iptables yum install iptables-services 编写允许访问的策略 vim /etc/sysconfig/iptables # sample configuratio ...
- 智慧城市three.js数字孪生三维展示城市建筑轮廓数据获取方法分析和AI算法方案剖析
一.目前世面上有的2种免费方案是 1.OpenStreetMap开源网站下载, 2.blender的gis插件获取城市建筑轮廓. 缺点是:只有重点城市和省会城市,一些地级市或者县级市基本没有数据. 二 ...
- ip地址、子网掩码、网关、dns简介
IP地址IPADDR: IP地址是唯一的标识,是一段网络编码(二进制),由32位组成. IP 是 Internet Protocol(网际互连协议)的缩写,是 TCP/IP 体系中的网络层协议. IP ...
- Spring6 的JdbcTemplate的JDBC模板类的详细使用说明
1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明 @ 目录 1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明 每博一文案 2. 环境准备 3 ...
- Springboot 项目集成 PageOffice V6 最简单代码
本文描述了PageOffice产品在Springboot项目中如何集成调用.(本示例使用了Thymeleaf模板引擎) 新建Springboot项目:pageoffice6-springboot2-s ...