一、JSON 解析类库

FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。

在maven项目的pom文件中以下依赖

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

二、编码与解码

1、编码

import com.alibaba.fastjson.JSONObject;

import java.util.Arrays;
import java.util.List; public class JsonTest1 {
public static void main(String[] args) {
JSONObject object = new JSONObject();
object.put("String","String");
object.put("Integer",1);
object.put("boolean",true);
List<Integer> list = Arrays.asList(1,2,3,4,5);
object.put("list",list);
object.put(null,null);
System.out.println(object);
}
}

结果

{"Integer":1,"boolean":true,"String":"String","list":[1,2,3,4,5]}

2、解码

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import java.lang.annotation.ElementType;
import java.util.Arrays;
import java.util.List; public class JsonTest2 {
public static void main(String[] args) {
JSONObject object = JSONObject.parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2,\"test\":\"\"}");
//boolean
Boolean bl = object.getBooleanValue("boolean");
System.out.println(bl);
//String
String string = object.getString("String");
System.out.println(string);
//list
List lts = JSON.parseArray(object.getJSONArray("list").toJSONString(), Integer.class);
System.out.println(lts);
for (Object i : lts) {
System.out.println(i);
}
//Integer
Integer integer = object.getIntValue("2");
System.out.println(integer);
//没有这个key
String aa = object.getString("AA");
System.out.println(aa);
String bb = (String) object.get("aa");
System.out.println(bb);
//对应的key没有value
String dd = object.getString("test");
System.out.println(dd);
String cc = object.get("test").toString();
System.out.println(cc);
} }

结果

true
null
[1, 2, 3]
1
2
3
0
null
null

最后2个的值为 " "

三、Json对象和字符串互相转换

https://www.runoob.com/w3cnote/java-json-instro.html

 四、关于JSON.toJSONString()的问题

原文:https://blog.csdn.net/weixin_43228497/article/details/87975659

4.1,第一种情况:
Activity activity=new Activity();
String str= JSON.toJSONString(activity);
此时,str是{}
第二种情况:
list list=new ArrayList();
String str= JSON.toJSONString(list);
此时,str是[]
第三种情况:
String str= JSON.toJSONString(null);
此时,str是null

4.2,怎么避免当list里面什么都没有的时候, JSON.toJSONString()之后是[]?
if(CollectionUtils.isEmpty(activityTypeDTOS)) {//加这个判断就可以了

五、JSON.toJSON().toString()与JSON.toJSONString()结果相同

import com.alibaba.fastjson.JSON;
import com..socialsecurity.domain.model.ABA1Entity;
import java.util.ArrayList; public class JsonTest {
public static void main(String[] args) {
ABA1Entity aba1Entity1 = new ABA1Entity();
aba1Entity1.setAac002("2");
ABA1Entity aba1Entity2 = new ABA1Entity();
aba1Entity2.setAac002("3");
List<ABA1Entity> aba1EntityList = new ArrayList<>();
aba1EntityList.add(aba1Entity1);
aba1EntityList.add(aba1Entity2);
String json = JSON.toJSON(aba1EntityList).toString();
String json1 =JSON.toJSONString(aba1EntityList);
System.out.println(json);
System.out.println(json1);
}
}

结果

[{"aac002":"2"},{"aac002":"3"}]
[{"aac002":"2"},{"aac002":"3"}]

六、StringEscapeUtils.unescapeJava(jsonStr)去掉转义符

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.socialsecurity.domain.model.Person2;
import groovy.json.StringEscapeUtils; import java.util.HashMap;
import java.util.List;
import java.util.Map; public class Test {
public static void main(String[] args) {
List data = null;
Map<String, String> resultMap = new HashMap<>();
JSONArray objArray = new JSONArray();
resultMap.put("age", "aa");
resultMap.put("name", "bb");
String jsonObject = JSON.toJSONString(resultMap);
objArray.add(jsonObject);
System.out.println("objArray:"+objArray);
data = objArray;
String json = JSON.toJSON(data).toString();
System.out.println(json);
if (data.size() == 1) {
JSONObject json3 = JSONObject.parseObject((String) data.get(0));
String jsonStr = JSON.toJSON(json3).toString();
String json4 = StringEscapeUtils.unescapeJava(jsonStr);
System.out.println("data.get(0):"+jsonStr);
System.out.println("StringEscapeUtils.unescapeJava(jsonStr):"+json4);
}
Person2 person = new Person2();
person.setName("bb");
person.setAge("aa");
String json1 = JSON.toJSON(person).toString();
System.out.println("person:"+json1);
} }

结果:

objArray:["{\"name\":\"bb\",\"age\":\"aa\"}"]
["{\"name\":\"bb\",\"age\":\"aa\"}"]
data.get(0):{"name":"bb","age":"aa"}
StringEscapeUtils.unescapeJava(jsonStr):{"name":"bb","age":"aa"}
person:{"name":"bb","age":"aa"}

Java中json使用与问题汇总的更多相关文章

  1. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  2. java中 json和bean list map之间的互相转换总结

    JSON 与 对象 .集合 之间的转换 JSON字符串和java对象的互转[json-lib]   在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级 ...

  3. (转)Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  4. Java中JSON字符串与java对象的互换实例详解(转)

    http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...

  5. Java中json的构造和解析

    什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式.  易于人阅读和编写.同时也易于机 ...

  6. Java中json工具对比分析

    Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...

  7. java中json和字符串互转及日期转换 练习

    一:以下是用到的jar名称: commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons- ...

  8. Java中 Json的使用

    转自:http://huyan.couplecoders.tech/%E5%BC%80%E5%8F%91%E8%80%85%E6%89%8B%E5%86%8C/2018/11/02/Java%E4%B ...

  9. java中json包的使用以及字符串,map,list,自定义对象之间的相互转换

    做一个map和字符串的转换,需要导入这些jar包,这是最基本的一些jar包. 经过多方尝试得出结论入下: 首先导入基本包:json-lib-2.2.3-jdk15.jar 如果没有这个jar包,程序是 ...

随机推荐

  1. c# 调用接口返回json

    需要命名空间 using System.Net; using System.Net.Security using System.Security.Cryptography.X509Certificat ...

  2. PIE调用Python获得彩色直方图

    前段时间我一直在研究PIE SDK与Python的结合,因为在我的开发中,我想获取一张图片的统计直方图,虽然在SDK中有提供关于直方图的类接口(如IStatsHistogram 接口.Histogra ...

  3. 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)

    背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...

  4. Lambda(二)lambda表达式使用

    Lambda(二)lambda表达式使用 Lambda 表达式组成: /* param list arrow lambda body (o1,o2) -> o1.getColor().Compa ...

  5. gsoap工具生成wsdl接口 注意事项

    wsdl是通过wsdl文件作为不同应用的通信接口,所以如何生成wsdl语言很重要,但是很多时候我们发现自己编写的头文件通过gsoap工具soapcpp2.exe从头文件中无法正常生成对应的wsdl语言 ...

  6. filebeat + ELK 部署篇

    ELK Stack Elasticsearch:分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储.搜索和分析操作.通 ...

  7. QQ和微信点击链接或扫描自动跳转外部浏览器

    微信上进行的网页宣传.游戏传播.APP下载各类活动很多,但是各位朋友肯定经常会遇到一些特殊需求,网页需要在手机默认浏览器打开而不是微信内置浏览器.这个问题怎么解决呢? 另一种情况是你的网址被恶意举报被 ...

  8. CI/CD DevOps

    CI/CD DevOps 通过技术工具链完成持续集成CI.持续交付CD.用户反馈和系统优化的整合,实现跨团队的无缝协作(DevOps). 什么是持续集成? 他是开发每天代码更新的副本,所有的开发工作都 ...

  9. css实现简单音乐符效果

    css实现简单音乐符效果 利用css3中的transform.animation.keyframes实现 <!DOCTYPE html> <html lang="en&qu ...

  10. CSS的四种基本选择器和四种高级选择器

    做个快乐的搬运工:https://blog.csdn.net/DYD850804/article/details/80997251