1、使用fastjson

对于json串大小写没什么要求,测试的时候,我把javaBean属性设置成和json串一样的大小写,代码如下:

package com.myTest.json.test1;

import java.util.ArrayList;
import java.util.List; import com.alibaba.fastjson.JSON; public class app1 { public static void main(String[] args) {
String jsonString = "[{'Value':'0','Name':'测试0','statusInfo':{'Status':'0'}},{'Value':'1','Name':'测试1','statusInfo':{'Status':'10'}},{'Value':'2','Name':'测试2','statusInfo':{'Status':'20'}},{'Value':'3','Name':'测试3','statusInfo':{'Status':'30'}},{'Value':'4','Name':'测试4','statusInfo':{'Status':'40'}},{'Value':'5','Name':'测试5','statusInfo':{'Status':'50'}},{'Value':'6','Name':'测试6','statusInfo':{'Status':'60'}},{'Value':'7','Name':'测试7','statusInfo':{'Status':'70'}},{'Value':'8','Name':'测试8','statusInfo':{'Status':'80'}},{'Value':'9','Name':'测试9','statusInfo':{'Status':'90'}}]";
//String jsonString = "{'Value':'0','Name':'测试0','statusInfo':{'Status':'12'}}";
List<DeviceReturn> deviceReturns= app1.getPersons(jsonString, DeviceReturn.class);
System.out.println(deviceReturns);
String toJsonString = JSON.toJSONString(deviceReturns);
System.out.println(toJsonString); } public static <T> T getPerson(String jsonString, Class cls) {
T t = null;
try {
t = (T) JSON.parseObject(jsonString, cls);
} catch (Exception e) {
// TODO: handle exception
}
return t;
} public static <T> List<T> getPersons(String jsonString, Class cls) {
List<T> list = new ArrayList<T>();
try {
list = JSON.parseArray(jsonString, cls);
} catch (Exception e) {
}
return list;
}
}

结果如下:

[com.myTest.json.test1.DeviceReturn@25d285b, com.myTest.json.test1.DeviceReturn@32046f93, com.myTest.json.test1.DeviceReturn@4139358c, com.myTest.json.test1.DeviceReturn@12ea9bc8, com.myTest.json.test1.DeviceReturn@6899712b, com.myTest.json.test1.DeviceReturn@31d4f3b3, com.myTest.json.test1.DeviceReturn@13cb8654, com.myTest.json.test1.DeviceReturn@16dffef3, com.myTest.json.test1.DeviceReturn@4bdb0f40, com.myTest.json.test1.DeviceReturn@1ac659a8]
[{"name":"测试0","statusInfo":{"status":"0"},"value":"0"},{"name":"测试1","statusInfo":{"status":"10"},"value":"1"},{"name":"测试2","statusInfo":{"status":"20"},"value":"2"},{"name":"测试3","statusInfo":{"status":"30"},"value":"3"},{"name":"测试4","statusInfo":{"status":"40"},"value":"4"},{"name":"测试5","statusInfo":{"status":"50"},"value":"5"},{"name":"测试6","statusInfo":{"status":"60"},"value":"6"},{"name":"测试7","statusInfo":{"status":"70"},"value":"7"},{"name":"测试8","statusInfo":{"status":"80"},"value":"8"},{"name":"测试9","statusInfo":{"status":"90"},"value":"9"}]

json串中大写的,转成javaBean,再转成Json串后,变成符合java规范的属性名,很强大的一个包,赞一个。

2、使用net.sf.json.JSON

json串必须是符合java规范的属性,首字母必须小写,否则不能转成javaBean

public static void main(String[] args) {
String jsonString = "[{\"value\":\"0\",\"name\":\"测试0\",\"statusInfo\":{\"status\":\"0\"}},{\"value\":\"1\",\"name\":\"测试1\",\"statusInfo\":{\"status\":\"10\"}}]";
JSONArray array = JSONArray.fromObject(jsonString);
System.out.println("JSONArray:"+array);
List<?> deviceReturns = JSONArray.toList(array, new DeviceReturn(), new JsonConfig());
JSONObject ob = JSONObject.fromObject(deviceReturns.get(0));
System.out.println(ob);
}

修改javaBean与之对应,也能成功。

Json转list,两种包,两种方式的更多相关文章

  1. javascript获取json对象的key名称的两种方法

    javascript获取json对象的key名称的两种方法 数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来.今天试过两种可以提取json key的方法,均可以正常 ...

  2. 用easyui从servlet传递json数据到前端页面的两种方法

    用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...

  3. Spring两种实现AOP的方式

    有两种实现AOP的方式:xml配置文件的方式和注解的形式 我们知道通知Advice是指对拦截到的方法做什么事,可以细分为 前置通知:方法执行之前执行的行为. 后置通知:方法执行之后执行的行为. 异常通 ...

  4. get和post两种表单提交方式的区别

    今天看到一篇博客谈论get和post区别,简单总结一下https://www.cnblogs.com/logsharing/p/8448446.html 要说两者的区别,接触过web开发的人基本上都能 ...

  5. HashMap两种遍历数据的方式

    HashMap的遍历有两种方式,一种是entrySet的方式,另外一种是keySet的方式. 第一种利用entrySet的方式: Map map = new HashMap(); Iterator i ...

  6. java double类型保留两位小数4种方法【转】

    4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberF ...

  7. 两种获取connectionString的方式

    两种获取connectionString的方式 1. public static string connectionString = ConfigurationManager.ConnectionSt ...

  8. OC中两种单例实现方式

    OC中两种单例实现方式 写在前面 前两天探索了一下C++ 的单例,领悟深刻了许多.今天来看看OC中的单例又是怎么回事.查看相关资料,发现在OC中一般有两种实现单例的方式,一种方式是跟C++ 中类似的常 ...

  9. 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编

    在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...

  10. javascript两种声明函数的方式的一次深入解析

    声明函数的方式 javascript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME ...

随机推荐

  1. 原创:微信小程序调用【统一下单】、【支付】、【支付回调】api并处理请求

    1.服务器端使用TP3.2处理(随便写在一个Controller里面) /* 小程序报名,生成订单 */ public function make_order(){ if(IS_POST){ $dat ...

  2. 关于iOS 热更新(热修复)你必须知道的一种方法- JSPatch

    本文为转载文章 . 版权归原文所有. 原文链接:iOS 5分钟集成热修复(JSPatch) 前言 在iOS中有很多种热修复方案,在这里我就不一一介绍了 这里有一篇介绍热修复的文章:iOS中的HotFi ...

  3. [转]MegCup2015初赛题

    原文链接 门票题:数独有多少种对解线上没有1的填法? 这道"门票题"虽说只是"热身",但还是有一定难度的.共有245名选手通过各种方法拿到了门票.下面,我们就为 ...

  4. Block编程注意的问题

    一,前言   block 是在 iOS 4 中引入的新特性,它和 C++ 11 中的 lamba 表达式概念相似,有时候也被称为闭包.经过一段时间的使用,我发现要用对用好 block 还是有不少需要注 ...

  5. Setting up a static IP address in Ubuntu

    sudo gedit /etc/network/interfaces Change the line iface eth0 inet dhcp to iface eth0 inet static an ...

  6. 工作总结 Mapper.Map 映射 AutoMapper

    对象映射工具 //1.创建映射规则  ,第一个参数为源实体(Model),第二个为目标实体(DTO) Mapper.CreateMap<studentSource, studentPurpost ...

  7. python练习笔记——利用信号signal处理僵尸进程

    1 signal处理僵尸进程的基于语法 利用信号signal处理僵尸进程的方法:signal(SIGCHLD,SIG_IGN),该方法也是第三种处理僵尸进程的方法. SIGCHLD:子进程状态改变后产 ...

  8. Python练习笔记——字符串反转

    请输入一段字符串,不利用反转函数,编写一段代码,将其反转. def list_reverse(a): list_long = len(a) list_long_half = list_long // ...

  9. mysql-5.7 innodb_buffer_pool刷新机制详解

    一.innodb的脏页刷新机制说明: 1.当innodb中的脏页比例超过innodb_max_dirty_pages_pct_lwm的值时,这个时候innodb就会开始刷新脏页到磁盘. 2.当inno ...

  10. Leaf——美团点评分布式ID生成系统

    背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识.如在美团点评的金融.支付.餐饮.酒店.猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数 ...