java字符串到dom object_JSON字符串和java对象转换[json

 2024-01-16 05:03:57  阅读 0

转发自:%401%2Csz%%2Cta%./=/w=0_10_/t=/l=3/tc?ref=&lid=&order=1&fm=alop&h5ad=1&srd=1&dict=32&tj=tle&=4&vit=osres&m= 8&cltj =&asres=1&title=JSON%E4%B8%8E%E5%AF%B9%E8%B1%A1%E9%9B%86%E5%90%88%E4%B9%8B%E9%97%B4% E7 %9A%84%E8%BD%AC%E6%8D%A2-自由-Dom-%E5%8D%9A%E5%AE%A2%E5%9B%AD&w_qd=&sec=24076&di=fb3c0&bdenc=1&tch=124.0 。 295.175.0.0&nsrc=&eqid=0&wd=&=%7B%%22%3A%%22%2C%%22%3A%%22%2C%22t%22%3A97%2C%22sig%22%3A%%22 %2C%%22%3A%22div-a-h3-em3%22%7D

在开发过程中,经常需要与其他系统交换数据。 数据交换的格式包括XML、JSON等。JSON作为一种轻量级的数据格式,比XML更加高效。 XML需要大量的标签,这无疑占用了网络空间。 流量,JSON在这方面做得很好。 我们先看一下JSON的格式。

JSON可以有两种格式,一种是对象格式,另一种是数组对象。

{"name":"JSON","":"北京市西城区","age":25}//JSON对象格式字符

[{"name":"JSON","":"北京市西城区","age":25}]//数据对象格式

从上面两种格式我们可以看出,对象格式与数组对象格式唯一的区别就是在对象格式中添加了[]。 看具体的结构,我们可以看到两者都是以键值对的形式出现。 , 英文中用逗号 (,) 分隔。

这种格式在前端和后端传输数据时也很流行。 后端返回json格式的字符串。 前端使用js中的JSON.parse()方法将JSON字符串解析为json对象,然后进行遍历,供前端使用。

下面进入正题,介绍JAVA中JSON与java对象的相互转换。

为了实现JSON和Java对象的相互转换,需要使用第三方jar包。 这里使用的是json-lib jar包。 下载地址为:json-lib需要--1.8.0.jar、--3.2。 对 1.jar、-lang-2.5.jar、--1.1.1.jar 和 -1.0.6.jar 五个包的支持可以从 下载。 这里就不贴下载地址了。

json-lib提供了几个类来完成这个功能,例如。 从类名可以看出,转换应该是对象格式,并且转换应该是数组对象(即用[]形式)。

1、java普通对象与json字符串之间的转换

java对象--》》字符串

Java普通对象是指java中的java bean,即实体类,比如,

.学习.day3;

班级 {

//姓名

姓名;

//年龄

年龄;

//地址

;

() {

姓名;

无效(名称){

this.name = 名称;

() {

年龄;

无效(年龄){

this.age = 年龄;

() {

;

空白 ( ) {

这。 = ;

@

() {

” [姓名=“+姓名+”,年龄=“+年龄+”,=

+ + “]”;

上面是我的一个普通的java实体类。 我们来看看 json-lib 如何将其转换为字符串形式。

空白 () {

斯图=新();

斯图。(“JSON”);

斯图。(“23”);

Stu.(“北京市西城区”);

//1. 使用

json = .(stu);

//2. 使用

数组=.(stu);

=json.();

=数组.();

.out.(":"+);

.out.(":"+);

我定义了一个实体类,然后使用 和 两个方法将其转换为JSON字符串。 请参阅下面的打印结果:

:{"":"北京市西城区","age":"23","name":"JSON"}

:[{"":"北京市西城区","age":"23","name":"JSON"}]

从结果可以看出,两种方法都可以将java对象转换为JSON字符串,但是转换后的结构不同。

JSON字符串--》》java对象

上面解释了如何将java对象转换为JSON字符串。 我们来看看如何将 JSON 字符串格式转换为 java 对象。

首先,需要定义两种不同格式的字符串,并且需要使用\来转义双引号。

空白 (){

//定义两种不同格式的字符串

="{\"姓名\":\"JSON\",\"年龄\":\"24\",\"\":\"北京市西城区\"}";

="[{\"姓名\":\"JSON\",\"年龄\":\"24\",\"\":\"北京市西城区\"}]";

//1. 使用

=.();

Stu=().(, .class);

//2. 使用

=.();

//获取到的第一个元素

o=.get(0);

=.(o);

Stu2=().(, .class);

.out.("stu:"+stu);

.out.("stu2:"+stu2);

打印的结果是:

Stu:[姓名=JSON,年龄=24,=北京市西城区]

Stu2:[姓名=JSON,年龄=24,=北京市西城区]

从上面的代码可以看出,可以很方便的将一个JSON格式的字符串转为一个java对象,但是使用起来却不是那么好用,因为它有“[]”符号,所以这里我们得到了对象,取它的第一个里面就是我们需要的变形,然后使用就很容易搞定了。

2.list与json字符串之间的转换

列表--》》json字符串

空白 (){

斯图=新();

斯图。(“JSON”);

斯图。(“23”);

Stu.(“北京市海淀区”);

列表lists=new();

列表.add(stu);

//1. 使用

// =.(列表);

//2. 使用

=.(列表);

//.out.(":"+.());

.out.(":"+.());

使用方法我注释掉了。 在评论之前我们先看看结果。

在“main”net.sf.json.: '' 中是一个数组。 使用

告诉我有一个例外。 通过查看源码,发现使用方法时,会先判断参数类型。 这里告诉我们传入的参数是数组类型,因为使用了。 我们来看看评论后的结果吧。 ,

:[{"":"北京市海淀区","age":"23","name":"JSON"}]

这个结果是正常的。

json字符串--》》列表

从上面的例子我们可以看出,列表对象只能转换为数组对象的格式,那么我们看一下下面从字符串到列表的转换,

空白 (){

="[{\"姓名\":\"JSON\",\"年龄\":\"24\",\"\":\"北京市西城区\"}]";

//转换为列表

列表list2=(列表).(.(),.class);

对于(stu:列表2){

.out.(stu);

//转换为数组

[] ss =([]).(.(),.class);

对于(:ss){

。出去。();

打印结果,

[姓名=JSON,年龄=24,=北京市西城区]

[姓名=JSON,年龄=24,=北京市西城区]

由于字符串的格式是带有“[]”的格式,所以这里选择这个对象。 它有可供使用的方法。 前者在java中转换为数组,或者在java中转换为列表。 由于这里有实体类来对应,所以使用时指定泛型类型(.class),这样就可以得到转换后的对象。

3.map与json字符串的相互转换

地图--》》json字符串

空白 (){

斯图=新();

斯图。(“JSON”);

斯图。(“23”);

Stu.(“中国上海”);

地图map=new();

map.put("第一", Stu);

//1,

=.(地图);

.out.(""+.());

//2,

=.(地图);

.out.(":"+.());

打印结果,

{"first":{"":"中国上海","age":"23","name":"JSON"}}

:[{"first":{"":"中国上海","age":"23","name":"JSON"}}]

上面打印了两个表格。

json字符串--》》地图

JSON字符串不能直接转换为地图对象。 要获取map中key对应的value,还需要其他方法。

空白 (){

="{\"第一\":{\"\":\"中国上海\",\"年龄\":\"23\",\"姓名\":\"JSON\"}}";

//

=.();

地图map=new();

map.put("第一个", .class);

//该方法使用,需要三个参数

my=().(, .class, 地图);

.out.(我的.());

打印结果,

[姓名=JSON,年龄=23,=中国上海]

下面是代码,

.学习.day4;

java.util.Map;

.学习.day3.;

班级 {

第一的;

() {

第一的;

无效(第一){

this.first = 第一个;

使用()方法,传入三个参数,第一个是对象,第二个是.class,第三​​个是Map对象。 可以知道,这个类中一定有一个first属性,它的类型必须对应map中的key和value类型,即first对应key,first类型对应value类型。

标签: 字符 转化 格式

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码