java json 易用_Java中 Json的使用

Java JSON

本章节我们将为大家介绍如何在 Java 语言中使用 JSON。

类库选择

Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

下面是几个常用的 JSON 解析类库。

Gson:谷歌开发的 JSON 库,功能十分全面。

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

Jackson:社区十分活跃且更新速度很快。

以下教程基于 FastJson 讲解。

环境配置

在 Maven 构建的项目中,在pom.xml文件中加入以下依赖即可。

com.alibaba

fastjson

1.2.47

编码与解码

编码

从Java变量到 JSON 格式的编码过程如下:

public voidtestJson() {

JSONObject object= newJSONObject();//string

object.put("string","string");//int

object.put("int",2);//boolean

object.put("boolean",true);//array

List integers = Arrays.asList(1,2,3);

object.put("list",integers);//null

object.put("null",null);

System.out.println(object);

}

在上述代码中,首先建立一个 JSON 对象,然后依次添加字符串,整数,布尔值以及数组,最后将其打印为字符串。 输出结果如下:

{"boolean":true,"string":"string","list":[1,3],"int":2}

解码

从 JSON 对象到 Java 变量的解码过程如下:

public voidtestJson2() {

JSONObject object=JSONObject

.parSEObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,\"int\":2}");//string

String s = object.getString("string");

System.out.println(s);//int

int i = object.getIntValue("int");

System.out.println(i);//boolean

boolean b = object.getBooleanValue("boolean");

System.out.println(b);//list

List integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);

integers.forEach(System.out::println);//null

System.out.println(object.getString("null"));

}

在上例中,首先从 JSON 格式的字符串中构造一个 JSON 对象,之后依次读取字符串,整数,布尔值以及数组,最后分别打印,打印结果如下:

string2

true

1

2

3

null

JSON 对象与字符串的相互转化

作用

JSON.parSEObject()

从字符串解析 JSON 对象

JSON.parseArray()

从字符串解析 JSON 数组

JSON.toJSONString(obj/array)

将 JSON 对象或 JSON 数组转化为字符串

实例:

//从字符串解析JSON对象

JSONObject obj = JSON.parSEObject("{\"runoob\":\"菜鸟教程\"}");//从字符串解析JSON数组

JSONArray arr = JSON.parseArray("[\"菜鸟教程\",\"RUNOOB\"]\n");//将JSON对象转化为字符串

String objStr =JSON.toJSONString(obj);//将JSON数组转化为字符串

String arrStr = JSON.toJSONString(arr);

Gson的使用

由于最近需要使用Gson,而Gson和fastjson在使用上还是有所区别的,所以今天稍微试一下Gson的使用.

测试代码如下:

importcom.google.common.reflect.TypeToken;importcom.google.gson.Gson;importcom.google.gson.JsonObject;importcom.google.gson.JsonParser;importcom.google.gson.annotations.SerializedName;importjava.util.List;/*** Created by pfliu on 2019/05/16.*/

public classGsonTest {public static voidmain(String[] args) {

Gson gson= newGson();

JsonParser parser= newJsonParser();//从json字符串拿到java对象并且拿到某些字段

String input = "{\"name\": \"huyanshi\",\"age\": 2}";

User user= gson.fromJson(input,User.class);

System.out.println(user.name);

System.out.println(user.age);//从json字符串拿到json对象并且获取某些字段

JsonObject jo =parser.parse(input).getAsJsonObject();

System.out.println(jo.get("name").getAsString());

System.out.println(jo.get("age").getAsInt());//从json字符串解析json的list//language=JSON

String i1 = "[{\"name\":\"huyanshi\",\"age\":\"12\"},{\"name\":\"huyanshi1\",\"age\":\"122\"}]";

List users = gson.fromJson(i1,new TypeToken>() {

}.getType());

System.out.println(users.toString());//新建一个json对象并添加某些字段,之后输出字符串

JsonObject jo1 = newJsonObject();

jo1.addProperty("name","huyanshi");

jo1.addProperty("age","12");

System.out.println(jo1.toString());//将java对象或者数组转换为json字符串

String a1 =gson.toJson(user);

String a2=gson.toJson(users);

System.out.println(a1);

System.out.println(a2);//测试注解@SerializedName,

User u = newUser();

u.name= "huyan";

u.age= 2;

System.out.println(gson.toJson(u));

}private static classUser {

@SerializedName(value= "nn")

String name;intage;

@OverridepublicString toString() {return "User{" +

"name=‘" + name + ‘\‘‘ +

",age=" + age +

‘}‘;

}

}

}

完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中数组所占字节怎么算

数组在内存中所占字节数可以使用sizeof操作符来计算,该操作符是专门用于检测类型或变量或数组在内存中所占有的空间(字节数);语法“sizeof(x)”,其中x是类型名、变量名或数组名等,可以返回x所占字节数。C语…

java伪装反序列化字节流_java对象序列化流和反序列化流

首先创建一个学生类import java.io.Serializable;public class Student implements Serializable {private static final long serialVersionUID 42L;private String name;//private int age;private transient int age;public Student() {}public Student(String name, int a…

sap界面功能_功能介面

sap界面功能目录 1.简介 2.理由 3. Lambda表达式 4.谓词<T> 5. BiPredicate <T&#xff0c;U> 6.函数<T&#xff0c;R> 7. BiFunction <T&#xff0c;U&#xff0c;R> 8.消费者<T> 9. BiConsumer <T&#xff0c;U> 10.供应商<T> 11.…

c 中头文件和源文件的区别是什么

区别&#xff1a;头文件是“.h”文件&#xff0c;提供接口&#xff1b;源文件是“.cpp”文件&#xff0c;提供实现。编译器规定源文件必须包含函数入口&#xff0c;即main函数&#xff1b;而头文件不得包含函数入口&#xff0c;头文件不可以单独编译成一个程序&#xff0c;仅仅…

rest api_REST API的演变

rest api每个开发人员都以某种方式接触到API 。 要么为一家大公司集成一个主要系统&#xff0c;或者使用最新的图形库生成一些精美的图表&#xff0c;要么直接与他喜欢的编程语言进行交互。 事实是&#xff0c;API无处不在&#xff01; 它们实际上代表了当今Internet的基本构建…

在c程序中,注释语句只能位于一条语句的后面吗

C语言中的注释在编写C语言源代码时&#xff0c;应该多使用注释&#xff0c;这样有助于对代码的理解。在C语言中有两种注释方式&#xff1a;一种是以/*开始、以*/结束的块注释&#xff08;block comment&#xff09;&#xff1b;另一种是以//开始、以换行符结束的单行注释&#…

java中的wn是什么意思_wnJava--做简捷的互动社区网站

13年3月份开始策划开发的个人作品&#xff0c;一直都是一个人开发&#xff0c;虽然自觉还有许多功能需要完善&#xff0c;冒着被各位大牛们批判的风险共享下源码&#xff0c;在看了网站之后感兴趣的可以自行下载啊。代码运行于tomcat容器&#xff0c;jsp-servlet架构 使用sprin…

C 运算符中不能重载的是哪些

C 运算符中不能重载的有&#xff1a;1、条件运算符“?:”&#xff1b;2、成员访问运算符“.”&#xff1b;3、域运算符“::”&#xff1b;4、长度运算符“sizeof”&#xff1b;5、成员指针访问运算符“->*”和“.*” 。重载&#xff1a;让操作符可以有新的语义&#xff0c;…

jdbc pdf_JDBC教程– ULTIMATE指南(PDF下载)

jdbc pdf在本文中&#xff0c;我们提供了全面的JDBC教程&#xff08;Java数据库连接性&#xff09;&#xff0c;这是Oracle提供的API&#xff0c;允许程序员处理Java应用程序中的不同数据库&#xff1a;它允许开发人员建立与数据库的连接&#xff0c;定义特定客户端如何访问给定…

C语言字符串输出函数puts()的作用是什么

C语言字符串输出函数puts()的作用&#xff1a;puts()在显示字符串时会自动在其末尾添加一个换行符。puts()遇到空字符时就停止输出&#xff0c;所以必须确保有空字符。  下面两个示例分别说明puts()的两个特点。  示例1&#xff1a;/* put_out.c -- using puts() */#includ…

java下标运算符_《Java从小白到大牛精简版》之第6章 运算符(下)

《Java从小白到大牛》纸质版已经上架了&#xff01;&#xff01;6.4 位运算符位运算是以二进位(bit)为单位进行运算的&#xff0c;操作数和结果都是整型数据。位运算符有如下几个运算符&#xff1a;&、|、^、~、>>、<>>&#xff0c;以及相应的赋值运算符&am…

maf中anglearc_Oracle MAF中的LOV

maf中anglearc我们都喜欢最强大的ADF功能值列表之一。 使用它们&#xff0c;我们可以声明并轻松地在ADF应用程序中构建非常复杂的功能。 一件好事是&#xff0c;我们在Oracle MAF中也有类似的方法。 在ADF BC中&#xff0c;我们在业务服务级别&#xff08;基本上在实体或VO级别…

一个c程序的执行是从哪里开始到哪里结束

一个C程序的执行是从main函数开始到main函数结束。C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语…

java9 coutdown_Java并发之CountDownLatch

正如每个Java文档所描述的那样&#xff0c;CountDownLatch是一个同步工具类&#xff0c;它允许一个或多个线程一直等待&#xff0c;直到其他线程的操作执行完后再执行。在Java并发中&#xff0c;countdownlatch的概念是一个常见的面试题&#xff0c;所以一定要确保你很好的理解…

jsf 写一个action_一个JSF清单示例

jsf 写一个action这是使用JSF 2.0&#xff08;JavaServer Faces&#xff09;构建的示例列表应用程序。 该应用程序是待办事项列表。 该应用程序具有添加&#xff0c;编辑或删除列表中项目的功能。 待办事项具有名称和描述属性。 完成的应用程序的JSF页面具有&#xff1a; 使用…

c 中=和==的区别有哪些?

c 中和的区别1、含义不同&#xff1a;“”是赋值的意思。它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值&#xff0c;或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改&#xff0c;不能是常量。我们用变量作左值&#xff…

java内部格式_详解java内部类的访问格式和规则

详解java内部类的访问格式和规则1.内部类的定义定义一个类来描述事物&#xff0c;但是这个事物其中可能还有事物&#xff0c;这时候在类中再定义类来描述。2.内部类访问规则①内部类可以直接访问外部类中的成员&#xff0c;包括私有。之所以可以直接访问外部类中的成员&#xf…

primefaces_使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证...

primefaces我会不时查看我博客上最受欢迎的内容&#xff0c;并尝试最好地满足您的需求。 因此&#xff0c;阅读我的博客是其他读者推动内容的一种方式。 另一种方法是通过评论或电子邮件与我联系。 今天&#xff0c;我将使用Primefaces修改我的JDBC Realm示例并将其更新到最新的…

c语言语句以什么结束

c语言源程序的每一条语句都英文输入状态下的“&#xff1b;”结束一条语句。不同的版编权程语言有不同的结束标志&#xff0c;Java&#xff0c;C 也是以“&#xff1b;”作为一行语句的结束的标志&#xff0c;也有不需要用“&#xff1b;”作为一行语句结束的编程语言&#xff…

java刷卡机_JavaPOS

摘要&#xff1a;UnifiedPOS和其衍生的JavaPOS标准&#xff0c;对收款机的硬件设备进行了规范。利用JUnit单元测试工具对嵌入式JavaPOS系统的设备接口进行了白盒测试&#xff0c;分析了市场主流收款机的不足&#xff0c;给出了嵌入式收款机的测试方法和测试用例POSDouble。测试…