Tag: json

将单个对象插入json文件而不重写整个文件

我正在研究一种方法,该方法使用JSON.NET将马对象添加到JSON格式的马数据库中。 一种选择是将整个文件反序列化为马匹列表,添加新马,然后序列化列表并重写整个文件。 我在下面的代码中实现了这种方法。 // adds a horse to the db public int AddHorse(Horse horse) { // identify and assign next available id to horse var horses = GetAllHorses(); int nextId = horses.Max(h => h.ID) + 1; horse.ID = nextId; // Add horse to list horses.Add(horse); // Write entire list to JSON file. Can I just […]

如何使用JavaScriptSerializer使用数字键解析JSON对象

我有一个像下面这样的对象在C#中被反序列化。 我想知道如何解析它。 我在这里尝试了这个例子 ,但是我很难理解如何让我的类识别每个对象的键(下面的2和3 )。 下面的JSON字符串基本上代表2个事务。 我想将每个事务表示转换为Transaction对象并将其放入Transaction对象的数组中。 { “2”: { “id”: “2”, “user_id”: “59”, “offer_id”: “1234” }, “3”: { “id”: “3”, “user_id”: “59”, “offer_id”: “1234” } } 这是我的课程: public class Transactions { // what goes here since the “key” field is always different? } public class Transaction { public int id { get; set; } […]

使用JSON.NET反序列化字典

我正在使用版本4.0.8的Newtonsoft.Json并尝试将其与Web API一起使用。 所以我想用JST反序列化JSON JsonConvert.DeserializeObject(jsonString); 这有效,直到我将Dictionary作为属性添加到此类并想要反序列化它。 json字符串的forms为 { “Date”:null, “AString”:”message”, “Attributes”:[ {“Key”:”key1″,”Value”:”value1″}, {“Key”:”key2″,”Value”:”value2″} ], “Id”:0, “Description”:”… } 当反序列JsonSerializationException JsonSerializationException类型的exception时会JsonSerializationException以下消息:“ 无法将JSON数组反序列化为类型’System.Collections.Generic.Dictionary`2 [System.String,System.String]’。 ” 我在这做错了什么? UPDATE1:使用JSON.NET进行序列化时,我得到以下字典: Attributes”:{“key1″:”value1″,”key2″:”value2”} 似乎WebApi以不同于Json.Net的方式反序列化对象。 服务器端我使用以下行进行隐式反序列化: return new HttpResponseMessage(object); UPDATE2:作为一种解决方法,我现在来到了服务器端。 return new HttpResponseMessage(JsonConvert.SerializeObject(license).Base64Encode()); 我用Json.Net服务器端转换它并将其作为base64编码的字符串传输。 所以Json.Net可以反序化自己的格式。 但它仍然不是我想要的,那么还有什么进一步的建议吗?

反序列化MandrillApp Webhook响应

据称MandrillApp API使用mime类型application/x-www-form-urlencoded发送一个JSON编码的消息数组 。 我遇到的问题是收到的数据如下: mandrill_events=%5B%7B%22event%22%3A%22send%22 %2C%22msg%22%3A%7B%22ts%22%3A136510999…etc url解码是: mandrill_events=[{“event”:”send”,”msg”:{ “ts”:1365109999,”subject”…etc 我尝试将此字符串反序列化为表示JSON数据的类,但JSON.NET反序列化器会发出错误。 码 m = JsonConvert.DeserializeObject(s); 例外 解析值时遇到意外的字符:m。 路径”,第0行,第0位。 根据我的想法,我认为mandrill_events=字符串的一部分是无效的。 该字符串是否可以反序列化? 反序列化时是否有一个我缺少的选项? 我该怎么办呢?

需要一个字符串JSON Validator

我正在使用newtonsoft的JSON.Net并热爱它的每一分钟。 但是,我使用JObject.Parse(jsonString)从响应字符串中获取JToken。 如果我发送无效的JSON,我会得到一个例外。 我可以捕获exception,但我希望能够在将字符串发送到Parse之前先测试它。 也许类似于JObject.TryParse() (它不存在)。 我甚至拿bool ValidJson(字符串) 我知道那里有JSONLint,但我真的希望将外部调用保持在最低限度。 有任何想法吗?

反序列化json树结构和设置父项

这似乎是一个非常基本的问题,但我很想找到一个优雅的解决方案。 我有一个Node类,我用它来构建树结构。 然后使用JsonConvert.SerializeObject(..)将其序列化为JSON。 为了防止在序列化时循环引用,我在Parent属性上放置了一个JsonIgnore属性。 这显然意味着父级未被序列化为生成的JSON输出中的每个节点的一部分。 当我反序列化相同的JSON字符串时,我希望Node对象分配正确的Parent,以便我可以轻松地向上遍历树。 实现这一目标的最简洁最简单的方法是什么? [JsonObject] public class Node : IEnumerable { public Guid Id { get; set; } public string Name { get; set; } [JsonIgnore] public Node Parent { get; private set; } [JsonProperty(“Children”)] private readonly Dictionary _children = new Dictionary(); public Node() { Id = Guid.NewGuid(); } public void Add(Node […]

使用C#解析复杂的JSON结果

我试图解析从Zoho Crm API返回的以下复杂JSON结果: { “response”: { “result”: { “Contacts”: { “row”: [ { “no”:”1″, “FL”: [ { “content”:”555555000000123456″, “val”:”CONTACTID” }, { “content”:”555555000000012345″, “val”:”SMOWNERID” }, { “content”:”John Doe”, “val”:”Contact Owner” }, { “content”:”Pete”, “val”:”First Name” }, { “content”:”Smith”, “val”:”Last Name” }, { “content”:”pete@mail.com”, “val”:”Email” }, { “content”:”5555551000000012346″, “val”:”SMCREATORID” }, { “content”:”Jane Doe”, “val”:”Created By” }, { […]

Newtonsoft.Json,Populate Dictionary失败

我通过Newtonsoft.json将字典序列化为json,并且代码如下: var serializeSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, TypeNameAssemblyFormat = FormatterAssemblyStyle.Full, Formatting = Formatting.Indented }; var serializedObject = JsonConvert.SerializeObject(dic, serializeSettings); 这段代码生成一个像这样的json: { “$type”: “System.Collections.Generic.Dictionary`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”, “9648af76-7986-4b34-8b2c-97b2345769ef”: “Test” } 我尝试通过以下代码将json反序列化为字典: var newDic = new Dictionay(); var deserializeSettings = new JsonSerializerSettings { TypeNameHandling = […]

如何解析Json.NET多态对象?

我编写了一个Web服务,它发送并返回用Json.NET创建的json。 我已经包含了类型名称,它允许多态性。 有点黑客攻击 ,我已经使用了Silverlight客户端,但我不知道如何让它适用于javascript客户端。 如何使用javascript解析这个? { “$type”: “MyAssembly.Zoo, MyAssembly”, “ID”: 1, “Animals”: [ { “$type”: “MyAssembly.Dog, MyAssembly”, “LikesBones”: true, “Name”: “Fido” }, { “$type”: “MyAssembly.Cat, MyAssembly”, “LikesMice”: false, “Name”: “Felix” } ] } 这是c#类: public class Animal { public string Name { get; set; } } public class Dog : Animal { public bool LikesBones […]

System.MissingMethodException:json数组的反序列化时出错

反序列化jsonString时出错。 错误是Type ‘oodleListingsUser’ is not supported for deserialization of an array. 我的反序列化代码是 string jsonString = new WebClient().DownloadString(“http://api.oodle.com/api/v2/listings?key=TEST&region=region_value&category=category_value&format=json”); JavaScriptSerializer ser = new JavaScriptSerializer(); jsonOodleApi p = ser.Deserialize(jsonString); 我对jsonOodleApi的定义是 public class jsonOodleApi { public oodleCurrent current; public oodleListings[] listings; public oodleMeta meta; public string state { get; set; } } 定义oodleCurrent和oodleMeta我不给予因为它的完美! oodleListings的定义是 public class oodleListings { public […]