`

json 转泛型的集合类

    博客分类:
  • java
 
阅读更多

 

package com.boce.test;

 

import java.io.Serializable;

 

public class Man implements Serializable{

 

private String orderId;

 

private String result;

 

private String msg;

//无参数的构造函数是必须的

public Man(){

 

}

 

public Man(String orderId, String result, String msg) {

super();

this.orderId = orderId;

this.result = result;

this.msg = msg;

}

 

public String getOrderId() {

return orderId;

}

 

public void setOrderId(String orderId) {

this.orderId = orderId;

}

 

public String getResult() {

return result;

}

 

public void setResult(String result) {

this.result = result;

}

 

public String getMsg() {

return msg;

}

 

public void setMsg(String msg) {

this.msg = msg;

}

 

 

}

 

 

package com.boce.test;

 

import java.io.IOException;

import java.util.List;

 

import com.fasterxml.jackson.core.JsonParser.Feature;

import com.fasterxml.jackson.databind.DeserializationFeature;

import com.fasterxml.jackson.databind.JavaType;

import com.fasterxml.jackson.databind.ObjectMapper;

 

public class JsonToCollection {

/**

* 字符串转化为集合类型的泛型 如ArrayList<*****> 

* @param data 

* @param collectionClass  ArrayList.class

*  @param  clazz   ***.class

* @return

*/

public Object jsonToListObject(final String data,Class<?> collectionClass, Class<?> ...clazz){

Object obj = null;

try {

// string to Object ObjectMapper类用序列化与反序列化映射器

ObjectMapper mapper = new ObjectMapper();

//获取泛型的Collection Type

JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass, clazz); 

// 当反序列化json时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,

// 因为,例如json里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略

mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

// 从json映射到java对象,得到country对象后就可以遍历查找,下面遍历部分内容,能说明问题就可以了

 

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;

 

obj = mapper.readValue(data, javaType);

} catch (IOException io) {

io.printStackTrace();

}

 

return obj;

}

 

/**

* 字符串转化为集合类型的泛型 如ArrayList<*****> 

* @param data 

* @param collectionClass  HashMap.class

*  @param  zlass   ***.class

*  @param  clazz   ***.class

* @return

*/

public Object jsonToHashMapObject(final String data,Class<?> collectionClass,Class<?> zlass, Class<?> clazz){

Object obj = null;

try {

// string to Object ObjectMapper类用序列化与反序列化映射器

ObjectMapper mapper = new ObjectMapper();

//获取泛型的Collection Type

JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass,zlass,clazz); 

// 当反序列化json时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,

// 因为,例如json里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略

mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

// 从json映射到java对象,得到country对象后就可以遍历查找,下面遍历部分内容,能说明问题就可以了

 

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;

 

obj = mapper.readValue(data, javaType);

} catch (IOException io) {

io.printStackTrace();

}

 

return obj;

}

 

public static void main(String[] args) {

 

JsonToCollection json = new JsonToCollection();

String data ="[{\"msg\":\"成功\",\"orderId\":\"17030700918003\",\"result\":\"true\"}]";

 

List<Man> list = (List<Man>)json.jsonToListObject(data, List.class, Man.class);

for(Man it:list){

System.out.println(it.getOrderId() +"--"+it.getResult()+"---"+it.getMsg());

}

 

}

 

}

 

 

分享到:
评论

相关推荐

    java的Jackson将json字符串转换成泛型List

    `constructParametricType()`的第一个参数是集合类(这里是`ArrayList.class`),第二个参数是集合元素的类型(`YourBean.class`)。 然后,我们可以使用`ObjectMapper`的`readValue()`方法,传入JSON字符串和之前...

    C# json 转hashtable

    与此相关的,`Hashtable`是.NET框架中的一个古老的集合类,用于存储键值对,它在早期的.NET应用中十分常见。然而,随着.NET Framework的发展,`Dictionary, TValue&gt;`逐渐取代了`Hashtable`,因为后者不支持泛型,且...

    Java中Json字符串直接转换为对象的方法(包括多层List集合)

    本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...

    Json、Webservice、Jquery、Ajax

    PreserveObjectReferences.aspx Json序列化泛型集合时得到两个相同的对象时,第二个引用第一个 PreserveReferencesHandling.aspx Json序列化泛型集合时得到两个相同的对象时,第二个引用第一个 ...

    多层集合嵌套的JSON数据转化为Java对象(src.zip)

    - JSON-lib不支持泛型,因此在Java对象中使用`List`时,不能指定具体的类型如`List&lt;SubObject&gt;`。在转换后,需要强转列表元素类型。 - JSON字段名与Java属性名不匹配时,可以通过`@JsonProperty`注解映射。 - `...

    json 转换成 bean集合 example

    3. JSON转Bean集合: 使用Jackson的`ObjectMapper`类,我们可以轻松地将JSON字符串转换为`User`对象的集合: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; ...

    SCCE航班管理系统

    在航班管理系统中,泛型集合可以用来存储各种类型的数据,比如航班号(int)、航班名称(string)或乘客对象(自定义的Passenger类)。 接下来,我们讨论序列化和反序列化。序列化是将对象的状态转换为可以存储或...

    Android 实用的数据json数据解析封装类

    * 解析JSON字符串到指定的泛型集合对象 * * @param jsonString JSON字符串 * @param type 泛型集合的Type类型 * @param &lt;T&gt; 泛型标记 * @return 解析后的集合对象 */ public &lt;T&gt; List&lt;T&gt; parseJsonToList...

    Android list转json工具类

    2. 创建工具类`JsonUtils`,并定义一个静态方法`listToJson`,接收一个泛型List作为参数: ```java import com.google.gson.Gson; import java.util.List; public class JsonUtils { public static &lt;T&gt; String ...

    jackson 对象json字符串数组集合互转

    在标题“Jackson对象json字符串数组集合互转”中,提到的核心概念是Jackson如何处理JSON字符串与Java集合(如List、Array等)之间的转换。下面将详细解释这一过程以及涉及的相关知识点。 1. JSON与Java对象映射: ...

    C# 解析json格式数据为IList

    在C#编程中,处理JSON...总之,C#通过Json.NET库提供了强大的JSON解析功能,可以方便地将JSON数据转换为IList类型,无论T是简单的基础类型还是复杂的自定义类。理解这个过程对于处理现代Web应用中的数据交换至关重要。

    json 转化工具类

    自定义的JSON转化工具类通常会有一些限制,比如不支持泛型、枚举类型或者复杂的嵌套结构,但它的好处在于可以根据项目需求进行定制。 在实际使用中,这类工具类会提供如下功能: - **JSON字符串转Java对象**:将...

    List对象列表 转换Json

    在.NET框架中,`List&lt;T&gt;`是一个泛型集合类,用于存储类型为T的对象列表。它提供了动态数组的功能,可以添加、删除、插入或访问元素。在给定的代码示例中,`List&lt;object&gt;`被用来存储从数据库查询结果中获取的对象实例...

    el表达式,json转换和redis使用所需jar包

    Gson的强大之处在于其灵活性和易用性,支持自定义序列化和反序列化规则,可以处理各种复杂的Java类型,如泛型、枚举、数组和集合等。在实际项目中,我们常利用Gson进行网络数据交换,或者将Java对象持久化到本地存储...

    使用第三方工具将各种对象转成json格式

    1. **JavaBean对象转JSON** JavaBean是一种遵循特定规范的Java类,通常用于封装数据。将JavaBean对象转为JSON时,我们可以使用如Jackson、Gson、Fastjson等流行的JSON库。以Jackson为例,首先需要引入Jackson库的...

    gson[json格式转换].zip

    Gson支持包括数组、集合、Map、枚举等多种复杂类型的转换,甚至可以处理泛型。 7. 日期/时间处理: 默认情况下,Gson会将日期转换为毫秒值的字符串。但你可以配置GsonBuilder来使用自定义的日期格式。 8. 错误...

    java中json转换jar

    除了基本类型和简单类,Gson还支持更复杂的Java结构,如集合、自定义泛型、枚举等。例如,如果你有一个包含User对象列表的JSON,可以这样做: ```java String jsonArrayString = "[{\"name\":\"John\",\"age\":30},...

    Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用

    在本实例中,`GetList`方法被标记为`[WebMethod]`,当`AjaxRequest.aspx`页面发起Ajax请求时,该方法就会被调用,并返回一个字符串类型的泛型集合。 #### 泛型集合(Generic Collections) 泛型提供了一种方法,以...

    json类库,Java解析json必用

    它包括`JSONObject`,`JSONArray`,`JSONString`等类。例如,将一个Java对象转换为JSON字符串: ```java import org.json.JSONObject; public class Person { private String name; private int age; // ...

    JSON对象互转案例fastjson

    它支持各种复杂的Java类型,包括自定义类、泛型、枚举等,并且提供了丰富的API来处理JSON数据,比如`parseObject()`用于将JSON字符串解析为单个Java对象,`parse()`用于解析任意的JSON数据等。 在实际开发中,除了`...

Global site tag (gtag.js) - Google Analytics