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());
}
}
}
相关推荐
`constructParametricType()`的第一个参数是集合类(这里是`ArrayList.class`),第二个参数是集合元素的类型(`YourBean.class`)。 然后,我们可以使用`ObjectMapper`的`readValue()`方法,传入JSON字符串和之前...
与此相关的,`Hashtable`是.NET框架中的一个古老的集合类,用于存储键值对,它在早期的.NET应用中十分常见。然而,随着.NET Framework的发展,`Dictionary, TValue>`逐渐取代了`Hashtable`,因为后者不支持泛型,且...
本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...
PreserveObjectReferences.aspx Json序列化泛型集合时得到两个相同的对象时,第二个引用第一个 PreserveReferencesHandling.aspx Json序列化泛型集合时得到两个相同的对象时,第二个引用第一个 ...
- JSON-lib不支持泛型,因此在Java对象中使用`List`时,不能指定具体的类型如`List<SubObject>`。在转换后,需要强转列表元素类型。 - JSON字段名与Java属性名不匹配时,可以通过`@JsonProperty`注解映射。 - `...
3. JSON转Bean集合: 使用Jackson的`ObjectMapper`类,我们可以轻松地将JSON字符串转换为`User`对象的集合: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; ...
在航班管理系统中,泛型集合可以用来存储各种类型的数据,比如航班号(int)、航班名称(string)或乘客对象(自定义的Passenger类)。 接下来,我们讨论序列化和反序列化。序列化是将对象的状态转换为可以存储或...
* 解析JSON字符串到指定的泛型集合对象 * * @param jsonString JSON字符串 * @param type 泛型集合的Type类型 * @param <T> 泛型标记 * @return 解析后的集合对象 */ public <T> List<T> parseJsonToList...
2. 创建工具类`JsonUtils`,并定义一个静态方法`listToJson`,接收一个泛型List作为参数: ```java import com.google.gson.Gson; import java.util.List; public class JsonUtils { public static <T> String ...
在标题“Jackson对象json字符串数组集合互转”中,提到的核心概念是Jackson如何处理JSON字符串与Java集合(如List、Array等)之间的转换。下面将详细解释这一过程以及涉及的相关知识点。 1. JSON与Java对象映射: ...
在C#编程中,处理JSON...总之,C#通过Json.NET库提供了强大的JSON解析功能,可以方便地将JSON数据转换为IList类型,无论T是简单的基础类型还是复杂的自定义类。理解这个过程对于处理现代Web应用中的数据交换至关重要。
自定义的JSON转化工具类通常会有一些限制,比如不支持泛型、枚举类型或者复杂的嵌套结构,但它的好处在于可以根据项目需求进行定制。 在实际使用中,这类工具类会提供如下功能: - **JSON字符串转Java对象**:将...
在.NET框架中,`List<T>`是一个泛型集合类,用于存储类型为T的对象列表。它提供了动态数组的功能,可以添加、删除、插入或访问元素。在给定的代码示例中,`List<object>`被用来存储从数据库查询结果中获取的对象实例...
Gson的强大之处在于其灵活性和易用性,支持自定义序列化和反序列化规则,可以处理各种复杂的Java类型,如泛型、枚举、数组和集合等。在实际项目中,我们常利用Gson进行网络数据交换,或者将Java对象持久化到本地存储...
1. **JavaBean对象转JSON** JavaBean是一种遵循特定规范的Java类,通常用于封装数据。将JavaBean对象转为JSON时,我们可以使用如Jackson、Gson、Fastjson等流行的JSON库。以Jackson为例,首先需要引入Jackson库的...
Gson支持包括数组、集合、Map、枚举等多种复杂类型的转换,甚至可以处理泛型。 7. 日期/时间处理: 默认情况下,Gson会将日期转换为毫秒值的字符串。但你可以配置GsonBuilder来使用自定义的日期格式。 8. 错误...
除了基本类型和简单类,Gson还支持更复杂的Java结构,如集合、自定义泛型、枚举等。例如,如果你有一个包含User对象列表的JSON,可以这样做: ```java String jsonArrayString = "[{\"name\":\"John\",\"age\":30},...
在本实例中,`GetList`方法被标记为`[WebMethod]`,当`AjaxRequest.aspx`页面发起Ajax请求时,该方法就会被调用,并返回一个字符串类型的泛型集合。 #### 泛型集合(Generic Collections) 泛型提供了一种方法,以...
它包括`JSONObject`,`JSONArray`,`JSONString`等类。例如,将一个Java对象转换为JSON字符串: ```java import org.json.JSONObject; public class Person { private String name; private int age; // ...
它支持各种复杂的Java类型,包括自定义类、泛型、枚举等,并且提供了丰富的API来处理JSON数据,比如`parseObject()`用于将JSON字符串解析为单个Java对象,`parse()`用于解析任意的JSON数据等。 在实际开发中,除了`...