Tag: 反序列化

使用JSON.NET将异构JSON数组反序列化为协变List <>

我有一个JSON数组包含具有不同属性的不同types的对象。 其中一个属性称为“types”,并确定数组项目的types。 这里是我的数据的一个例子: [{ type : "comment", text : "xxxx" }, { type : "code", tokens : [{ type : "ref", data : "m" }, { type : "operator", data : "e" } ] }, { type : "for", boundLocal : { type : "local", name : "i", kind : "Number" }, upperBound : { […]

Newtonsoft JSON – dynamic对象

我正在使用Newtonsoft JSON库对传入的原始JSON执行dynamic反序列化,并发现了一些我无法解释的东西。 起点是以下JSONstring: { "task": { "dueDate": "2012-12-03T00:00:00" } } 那里没有太复杂的… 在代码中,我是这样做的: var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson); DateTime dueDate = dyn.task.dueDate.Value; 这段代码已经存在好几个月了,可以正常工作,但是在最近的testing版本中,我们发现了以下错误: “Newtonsoft.Json.Linq.JObject”不包含“任务”的定义 堆栈跟踪:在CallSite.Target(Closure,CallSite,对象)在System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0,TRet](CallSite站点,T0 arg0) 现在这是奇怪的地方,如果我改变上面的代码,一切都开始工作了: DateTime dueDate = dyn.task.dueDate.Value; 至 DateTime dueDate = dyn["task"]["dueDate"].Value; 所以,虽然这是“固定的”,但我不明白为什么这个问题会解决,可能的原因是什么。 有没有人有任何想法

使用Json.Net将int转换为bool

我打电话给Web服务和返回的数据为bool字段是0或1但是与我的模型我正在使用System.Bool 使用Json.Net可以将0/1转换成我的模型的布尔值吗? 目前我收到一个错误 Newtonsoft.Json.JsonSerializationException:将值“0”转换为types“System.Boolean”时出错 任何帮助都是极好的!!

jackson真的无法将json反序列化成generics?

这是一个重复的问题,因为下面的问题要么混乱,要么根本没有答案: 反序列化-A-通用型与jackson jackson反序列化-到-运行指定的类 用jackson反序列化,generics类 jackson反序列化generics类variables 我希望这个问题能够最终find一个让问题清楚的答案。 有一个模型: public class AgentResponse<T> { private T result; public AgentResponse(T result) { this.result = result; } public T getResult() { return result; } } JSONinput: {"result":{"first-client-id":3,"test-mail-module":3,"third-client-id":3,"second-client-id":3}} 以及两种推荐的对generics进行反序列化的方法: mapper.readValue(out, new TypeReference<AgentResponse<Map<String, Integer>>>() {}); 要么 JavaType javaType = mapper.getTypeFactory().constructParametricType(AgentResponse.class, Map.class); mapper.readValue(out, javaType); jackson永远不能处理genericstypesT,它认为它是一个来自JavaType的Map,但是由于types擦除,它findObjecttypes的构造函数参数,并引发错误。 那么这是一个jackson错误,还是我做错了什么? 还有什么明确的TypeReference或JavaType规范? com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for […]

jacksonJson并没有这样的方法错误

我正在尝试使用jackson来序列化和反序列化一个POJO。 从POJO到JSON完美地工作,但是走向另一个方向却不行。 我有一个POJO public class Event { private String kind; public String getKind() { return kind; } public void setKind(String kind) { this.kind = kind; } } 并运行并testing我运行的package calendar.model; Event event = new Event(); event.setKind("This is a kind"); String json = objectMapper.writeValueAsString(event); // RETURNS: "{\"kind\":\"This is a kind\"}" objectMapper.readValue(json, Event.class); 抛出exception java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonParser.getValueAsString()Ljava/lang/String; at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:24) […]

jackson注释中的多态性:@JsonTypeInfo用法

我想知道是否可以使用@JsonTypeInfo注释接口。 我有一系列应该被序列化和反序列化的类。 这是我想要做的。 我有两个实现类Sub1 , Sub2实现MyInt 。 某些模型类具有实现types的接口引用。 我想反序列化基于多态的对象 @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT) @JsonSubTypes({ @Type(name="sub1", value=Sub1.class), @Type(name="sub2", value=Sub2.class)}) public interface MyInt{ } @JsonTypeName("sub1") public Sub1 implements MyInt{ } @JsonTypeName("sub2") public Sub2 implements MyInt{ } 我得到以下JsonMappingException : 意外的令牌(END_OBJECT),预期的FIELD_NAME:需要包含typesID的JSONstring

与gson的多态性

我有一个反序列化与JSONstring的问题。 我收到一组命令。 该命令可以是启动,停止,其他types的命令。 自然我有多态性,并从命令inheritance启动/停止命令。 我如何使用gson将其序列化回正确的命令对象? 似乎我只得到基本types,这是声明的types,而不是运行时types。

将JSON反序列化为JavaScript对象

我在使用AJAX访问的Java服务器应用程序中有一个string。 它看起来如下所示: var json = [{ "adjacencies": [ { "nodeTo": "graphnode2", "nodeFrom": "graphnode1", "data": { "$color": "#557EAA" } } ], "data": { "$color": "#EBB056", "$type": "triangle", "$dim": 9 }, "id": "graphnode1", "name": "graphnode1" },{ "adjacencies": [], "data": { "$color": "#EBB056", "$type": "triangle", "$dim": 9 }, "id": "graphnode2", "name": "graphnode2" }]; 当string被从服务器中取出时,是否有一种简单的方法可以将它变成一个活跃的JavaScript对象(或数组)? 或者我必须手动拆分string,并手动build立我的对象?

使用JSon.NET和dynamic数据反序列化JSON

我试图将一些JSON数据反序列化为应用程序的对象。 直到现在,它已经很好,因为在JSON数据的属性是静态的(键值)。 现在我得到了一个关键是dynamic数据的结果。 以下是一个示例JSONurl: http://en.wikipedia.org/w/api.php?action=query&format=json&pageids=6695&prop=info 由此产生的JSON是: { "query" : { "pages" : { "6695" : { "counter" : "", "lastrevid" : 468683764, "length" : 8899, "ns" : 0, "pageid" : 6695, "title" : "Citadel", "touched" : "2012-01-03T19:16:16Z" } } } } 好吧,除非我不能将“页面”数据反序列化为对象,否则这很好。 如果我要为页面定义一个类,它将看起来像这样: public class 6695 { public string counter { get; set; } public […]

在Spring中编写JSON解串器或者扩展它的正确方法

我正在尝试在Spring中编写一个自定义的JSON解串器。 我想为大部分字段使用默认的序列化器,并为less数属性使用自定义的反序列化器。 可能吗? 我正在尝试这种方式,因为属性的大部分都是值,所以对于这些我可以让jackson使用默认的反序列化器; 但很less有属性是引用,所以在自定义反序列化器中,我必须查询数据库的引用名称并从数据库中获取引用值。 如果需要,我会显示一些代码。