java控制器返回需要的字段

java控制器返回需要的字段,第1张

在 Java 程序中,获取控制器返回的字段需要通过对控制器返回结果对象的解析来实现。一般来说,控制器返回结果通常为一个 JSON 格式的字符串或一个带有各种键值对的 Map 对象。您可以根据返回结果的具体格式使用相应的解析方法进行解析。

以下是一些常用的 Java 解析控制器返回结果的方法:

1 使用 Gson 库,将 JSON 格式的控制器返回结果解析成 Java 对象。

```java

String jsonString = /获取控制器返回的 JSON 格式字符串/

Gson gson = new Gson();

ResultObject result = gsonfromJson(jsonString, ResultObjectclass);

/其中 ResultObject 是您定义的 Java 对象,用于存储解析后的控制器返回结果/

```

2 将控制器返回的结果解析成 JSONObject 对象,使用其提供的方法获取想要的字段值。

```java

String jsonString = /获取控制器返回的 JSON 格式字符串/

JSONObject json = new JSONObject(jsonString);

String fieldValue = jsongetString("fieldName");

/其中 fieldName 是您需要获取的具体字段名,fieldValue 是对应的字段值/

```

3 将控制器返回的结果解析成 Map 对象,使用其提供的方法获取想要的字段值。

```java

Map<String,Object> resultMap = /获取控制器返回的 Map 对象/

Object fieldValue = resultMapget("fieldName");

/其中 fieldName 是您需要获取的具体字段名,fieldValue 是对应的字段值/

```

需要注意的是,在解析控制器返回结果时,应当进行必要的参数校验和异常处理,以确保代码的稳定可靠性。

可以使用三种方式,用json接收一个list,方法如下:

1、使用orgjsonJSONArray包:

1

2

3

4

5

6

7

JSONArray json = new JSONArray();

for(User u : list){

JSONObject jo = new JSONObject();

joput("id", ugetId());

joput("title", ugetName());

jsonput(jo);

}

2、使用netsfjson包下JSONArray的静态方法:fromObject(list), 这是网上大多是直接用此方法快捷转换JSON,但是对于list的要求就是其中的元素是字符串或对象,否则JSON不知道你想要的是什么数据:

1

JSONArray json = JSONArrayfromObject(list);

3、使用google的gson,将list转为json字符串:

综上4种Json技术的比较: 在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用,

如果只是功能要求,没有性能要求,可以使用google的Gson,

如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean

21 主要类介绍

Gson类:解析json的最基础的工具类

JsonParser类:解析器来解析JSON到JsonElements的解析树

JsonElement类:一个类代表的JSON元素

JsonObject类:JSON对象类型

JsonArray类:JsonObject数组

TypeToken类:用于创建type,比如泛型List<>

22 maven依赖

23 bean转换json

24 json转换bean

25 json转换复杂的bean,比如List,Set

将json转换成复杂类型的bean,需要使用TypeToken

26 通过json对象直接 *** 作json以及一些json的工具

a) 格式化Json

b) 判断字符串是否是json,通过捕捉的异常来判断是否是json

c) 从json串中获取属性

d) 除去json中的某个属性

e) 向json中添加属性

f) 修改json中的属性

g) 判断json中是否有属性

h) json中日期格式的处理

然后使用gson对象进行json的处理,如果出现日期Date类的对象,就会按照设置的格式进行处理

i) json中对于Html的转义

这种对象默认对Html进行转义,如果不想转义使用下面的方法

31 maven依赖

32 基础转换类

同上

33 bean转换json

将对象转换成格式化的json

将对象转换成非格式化的json

obj设计对象

对于复杂类型的转换,对于重复的引用在转成json串后在json串中出现引用的字符,比如 [0]books[1]

34 json转换bean

35 json转换复杂的bean,比如List,Map

36 通过json对象直接 *** 作json

a) 从json串中获取属性

b) 除去json中的某个属性

c) 向json中添加属性

d) 修改json中的属性

e) 判断json中是否有属性

f) json中日期格式的处理

使用JSONtoJSONStringWithDateFormat,该方法可以使用设置的日期格式对日期进行转换

41 maven依赖

42 基础转换类

同上

43 bean转换json

a)将类转换成Json,obj是普通的对象,不是List,Map的对象

b) 将List,Map转换成Json

44 json转换bean

45 json转换List,对于复杂类型的转换会出现问题

46 json转换Map

47 json对于日期的 *** 作比较复杂,需要使用JsonConfig,比Gson和FastJson要麻烦多了

创建转换的接口实现类,转换成指定格式的日期

48 JsonObject 对于json的 *** 作和处理

a) 从json串中获取属性

b) 除去json中的某个属性

c) 向json中添加和修改属性,有则修改,无则添加

d) 判断json中是否有属性

fastjson jackson 在把对象序列化成json字符串的时候,是通过反射遍历出该类中的所有getter方法;

Gson 是通过反射遍历该类中的所有属性。

所以, 在定义POJO中的布尔类型的变量时,不要使用isSuccess这种形式,而要直接使用success

以上为网上摘抄,以下为实际项目中使用结果。

实体类为 BaseVOjava :

用Gson 将该实体类转成json时报以下异常:

原因是:子类和父类有相同的字段属性;

解决方法:

(1)重命名重复字段。因为重复的字段在第三方包中,所以该方法在本例中不可行。

(2)将实体类中需要打印的字段加上注解 @Expose ,(本例将该类所有有get方法的属性都加上了) :

新建gson:

excludeFieldsWithoutExposeAnnotation 排除掉没有Expose注解的属性。

或者在不需要解析的字段前面加上 transient :

用该方式,没有报异常了,解析结果(加注解 @Expose 或加 transient )如下:

但从结果来看,那些直接调用第三方api获取值的属性没有解析,因为第三方的类无法加上 @Expose注解 ,导致这些属性为 null ,而 Gson默认的规则不会解析为 null 的属性 ,比如:

(3)换解析方式:使用FastJson。

因为FastJson是通过getter方法获取属性,并把其值序列化成json字符串的,所以这里,我们这个实体类中去掉不想被解析的属性的get方法,变成如下:

fastJson、JackJson以及Gson序列化对象与get、set以及对象属性之间的关系

你好:

后台拆分json

private String interactPrizeAll;    //json 使用字符串来接收

方法中的代码:

Gson gson = new Gson();

InteractPrize interactPrize =new InteractPrize();

 //gson用泛型 转List数组 多个对象

List<InteractPrize > interactPrizeList = gsonfromJson(interactPrizeAll, new TypeToken<List<InteractPrize>>(){}getType()); //TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换 

for(int i = 0; i < interactPrizeListsize(); i++)  

   {  

    interactPrize = interactPrizeListget(i);//获取每一个对象

    }

 这一种方法是转单个对象时使用的

 //gson 转对象 单个对象

//interactPrize = gsonfromJso(interactPrizeAll,InteractPrizeclass);

这个方法是我后台拼的json往前台传的方法

jsonStrAllappend("{"+ "\""+"catid"+"\""+":"+"\""+cgetCatid()+"\""+","+"\""+"catname"+"\""+":"+"\""+cgetCatname()+"\""+","+ "\""+"catdesc"+"\""+":"+"\""+cgetCatdesc()+"\""+","+"\""+"showinnav"+"\""+":"+"\""+cgetShowinnav()+"\""+","+"\""+"sortorder"+"\""+":"+"\""+cgetSortorder()+"\""+","+"level:"+"\""+"0"+"\""+",parent:"+"\""+"0"+"\""+",isLeaf:true,expanded:false,"+"loaded:true},");

你自己挑着用吧!

以上就是关于java控制器返回需要的字段全部的内容,包括:java控制器返回需要的字段、java 获取json返回值中 list 中的数量,如何获取list中有多少条信息、Gson、FastJson、Jackson、json-lib对比总结等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9707641.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存