当使用ObjectMapper将json字符串转换为实体时,我可以将其设置为通用的:
public <E> E getConvertedAs(String body, Class<E> type) throws IOException {
return mapper.readValue(body, type);
}
现在让我们假设我想读集合。我可以做到:
List<SomeEntity> someEntityList = asList(mapper.readValue(body, SomeEntity[].class));
List<SomeOtherEntity> someOtherEntityList = asList(mapper.readValue(body, SomeOtherEntity[].class));
我想写一个与上述方法等效的方法,但用于集合。因为java中不能有泛型数组,所以这样的东西是行不通的:
public <E> List<E> getConvertedListAs(String body, Class<E> type) {
return mapper.readValue(body, type[].class);
}
这里有一个几乎可行的解决方案:
mapper.readValue(jsonString, new TypeReference<List<EntryType>>() {});
问题是它没有反序列化为E
的列表,而是LinkedHashMap的列表。条目
。有没有什么方法可以更进一步,如下所示?
public <E> List<E> getConvertedListAs(String body, Class<E> type) {
mapper.readValue(body, new TypeReference<List<type>>() {}); // Doesn't compile
}
public static <E> List<E> fromJson(String in_string, Class<E> in_type) throws JsonParseException, JsonMappingException, IOException{
return new ObjectMapper().readValue(in_string, new TypeReference<List<E>>() {});
}
在我的计算机上编译。但请注意,我还没有测试它。
此方法可以帮助将json
读取到对象或集合:
public class JsonUtil {
private static final ObjectMapper mapper = new ObjectMapper();
public static <T>T toObject(String json, TypeReference<T> typeRef){
T t = null;
try {
t = mapper.readValue(json, typeRef);
} catch (IOException e) {
e.printStackTrace();
}
return t;
}
}
读取json以列出:
List<Device> devices= JsonUtil.toObject(jsonString,
new TypeReference<List<Device>>() {});
读json到对象:
Device device= JsonUtil.toObject(jsonString,
new TypeReference<Device>() {});
问题内容: 我对WCF有点陌生,将尝试清楚地描述我要做什么。 我有一个使用JSON请求的WCF Web服务。我在大多数情况下都可以很好地发送/接收JSON。例如,以下代码可以正常运行,并且符合预期。 JSON已发送: WCF: 这将按预期返回带有“ Dave”的JSON对象。问题是我无法始终保证我收到的JSON与我的DataContract中的成员完全匹配。例如,JSON: 由于大小写不匹配,将无
这是一个特定的问题,我在Gson的javadoc中找不到关于这个话题的任何信息。 目前,我正在尝试将Json(1)解析为对象。通常我会将这些值映射到对象,并带有和字段,但是我希望更独立于API。 为了(1)我会 但是如果我们测试另一个endpoint,得到的Json(2)会是这样的 这使得我以前构造的毫无用处,我需要创建一个新的Class,其中包含相应的字段。 所以我真正的问题是: > 是否有一个
问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列
我正在努力实现的是: 我们有一个JSON对象流进来。 我想从JSON重建一个Java对象。 我想应用转换(如更改字符串的格式和拒绝一个对象,如果满足一些条件,如'isToBe消耗'==false和可能的平坦从嵌套到线性的继承) 我希望能够将JSON对象的值存储到数据库中。 当一种新类型的JSON对象流出现时,我可以为每种类型的流运行CREATE TABLE,但我不想做任何代码更改。 换句话说,我希
问题内容: 我正在客户端和Django服务器之间发送信息,并且我想对此使用JSON。我正在发送简单的信息-字符串列表。我尝试使用,但是当我这样做时, 看来这只能用于Django对象。如何序列化简单的Python对象? 问题答案: 你可以使用纯Python执行此操作:
问题内容: 我正在尝试使用Northwind OData服务: http://services.odata.org/V3/OData/OData.svc/Products?$format=json 并将其反序列化为一系列产品: 但是序列化器似乎不喜欢该部分,并且事实是那里有2 条记录(不确定它们是什么)。 是否有捷径可寻? 问题答案: 使用Json.Net