Tag: json

反序列化JSON子文档

我正在调用JIRA Rest API来接收Worklog对象列表。 我收到的JSON看起来像。 { “startAt”: 0, “maxResults”: 1, “total”: 1, “worklogs”: [ { “self”: “http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000”, “author”: { “self”: “http://www.example.com/jira/rest/api/2/user?username=fred”, “name”: “fred”, “displayName”: “Fred F. User”, “active”: false }, “updateAuthor”: { “self”: “http://www.example.com/jira/rest/api/2/user?username=fred”, “name”: “fred”, “displayName”: “Fred F. User”, “active”: false }, “comment”: “I did some work here.”, “visibility”: { “type”: “group”, “value”: “jira-developers” }, […]

是否存在用于JsonTextReader的XmlTextReader.ReadContentAsBase64模拟

我有一个包含二进制属性的JSON,其值非常大: { “NormalStringValue” : “test”, “NormalIntValue” : 1, “LargeBinaryValueInBase64”: “AQB….” } 标准的Newtonsoft JsonTextReader.ReadAsBytes读取JsonTextReader.ReadAsBytes的值,因此分配了一个大字节数组。 我想避免这个。 对于XmlTextReader有一个ReadContentAsBase64(byte[] buffer, int offset, int count)方法,可以执行BASE64内容的缓冲读取。 是否有任何库为JSON数据实现这样的方法? 或者也许可以通过Json.NET实现?

当子类中使用“new”时,JavascriptSerializer序列化属性两次

尝试创建一个服务来返回一个具有许多共享属性的对象,但在某些情况下,一个属性应该受到高度限制。 这导致奇怪和不期望的行为,其中属性名称在序列化输出中重用,导致浏览器中的行为不正确。 下面是一个可以粘贴到LINQPad的示例(如果添加对System.Web.Extensions的引用)以查看问题: void Main() { System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer(); json.Serialize(new Full(true)).Dump(); json.Serialize(new Limited()).Dump(); } public class Full { public String Stuff { get { return “Common things”; } } public FullStatus Status { get; set; } public Full(bool includestatus) { if(includestatus) Status = new FullStatus(); } } public class Limited : Full { […]

从JSON解析和提取属性

我有一个类似于这个的大型JSON文件: { “data”:[ { “attribution”:null, “tags”:[ “thenight2” ], “type”:”image”, “images”:{ “standard_resolution”:{ “url”:”http://distilleryimage3.s3.amazonaws.com/59d6984092a211e392db12e25f465f4f_8.jpg”, “width”:640, “height”:640 } } }, { “attribution”:null, “tags”:[ “thenight2” ], “type”:”image”, “images”:{ “low_resolution”:{ “url”:”http://distilleryimage1.s3.amazonaws.com/c179b34a91ff11e3b99c0aa73e1070c5_6.jpg”, “width”:306, “height”:306 }, “thumbnail”:{ “url”:”http://distilleryimage1.s3.amazonaws.com/c179b34a91ff11e3b99c0aa73e1070c5_5.jpg”, “width”:150, “height”:150 }, “standard_resolution”:{ “url”:”http://distilleryimage1.s3.amazonaws.com/c179b34a91ff11e3b99c0aa73e1070c5_8.jpg”, “width”:640, “height”:640 } }, “users_in_photo”:[ ] } ] } 我想从JSON中所有图像的standard_resolution属性中提取所有url属性值的列表。 怎么做到呢?

从对象字典C#中获取价值

我正在使用LiveConnect sdk来获取一些用户信息。 在做了必要的事情之后,这就是我得到的结果: { “id”: “123456789”, “name”: “ab”, “first_name”: “a”, “last_name”: “b”, “link”: “https://profile.live.com/”, “work”: [], “gender”: null, “emails”: { “preferred”: “a@live.com”, “account”: “a@live.com”, “personal”: null, “business”: null }, “addresses”: { “personal”: { “street”: null, “street_2”: null, “city”: null, “state”: null, “postal_code”: null, “region”: null }, “business”: { “street”: null, “street_2”: null, “city”: null, “state”: […]

C#反序列化派生并具有引用的对象

我有一个类型节点的对象。 Node.cs 我打电话时序列化工作如下: var nodeSer = JsonConvert.SerializeObject(mynode, Formatting.Indented, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects }); 我的问题是以下调用不起作用。 var n = JsonConvert.DeserializeObject(nodeSer, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects, TypeNameHandling = TypeNameHandling.Auto }); 该调用导致以下错误: Newtonsoft.Json.JsonSerializationException: “ISerializable type ‘System.Action’ does not have a valid constructor. To correctly implement ISerializable a constructor that takes SerializationInfo and StreamingContext parameters should be […]

parse.com:SerializationException使用“__type”属性反序列化JSON对象

我正在开发一个Windows 10 UWP应用程序,似乎无法摆脱这个错误:“mscorlib.ni.dll中发生类型’System.Runtime.Serialization.SerializationException’的例外,但未在用户代码中处理” 我正在使用Rest API从Parse上的数据存储中检索值并实例化对象。 这是我class级的样子 public class ImageTest { public class Image { public string __type { get; set; } public string name { get; set; } public string url { get; set; } } public class Result { public string createdAt { get; set; } public Image image { get; set; } public […]

将字段添加到JSON数组中

我有一个带有这样的数组的JSON字符串: { “Id”: 123, “Username”: “Sr. X”, “Packages”: [ { “Name”: “Cups”, “SupplierId”: 1, “ProviderGroupId”: 575, “SupplierName”: “Foo Cups” }, { “Name”: “Pins”, “SupplierId”: 5, “ProviderGroupId”: 1082, “SupplierName”: “Foo Pins” } ] } 我想在Packages数组中添加一个新字段,如: “Packages”: [ { “Name”: “Cups”, “SupplierId”: 1, “ProviderGroupId”: 575, “SupplierName”: “Foo Cups”, “New Field”: “Value” },… 现在我可以添加一个新字段但是在主对象中,我正在使用Json.NET库来完成这项工作,但似乎文档没有达到那个级别。 有没有人以前做过?

将Json对象属性分配给模型

我使用动态和JObject.Parse匹配从嵌套的JSON-Object到模型类的大约90个属性: dynamic json = JObject.Parse(JsonObjectAsString); return new Foo() { prop1 = json.summer.temperature, prop2 = json.winter.temperature, … prop100 = json.autumn.temperature } 这非常慢,但仅限于第一次运行 。 在第二次运行时,将获取新的JSON-Object(相同的结构但不同的值),并且可以立即将此一个JSON-Object分配给相应的模型属性。 这是为什么? 我该怎么做才能加快第一次跑步? 编辑:我已经将构建类型设置为“发布”。

如何使用Json.net修改一个字段的Json序列化?

比方说,我正在尝试将具有10个字段的对象转换为Json,但是我需要修改序列化其中一个字段的过程。 目前,我必须使用手动写出每个属性,如下所示: public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); writer.WritePropertyName(“Field1”); serializer.Serialize(writer, value.Field1); writer.WritePropertyName(“Field2”); serializer.Serialize(writer, value.Field2); writer.WritePropertyName(“Field3”); serializer.Serialize(writer, value.Field3); writer.WritePropertyName(“Field4”); serializer.Serialize(writer, Convert.ToInt32(value.Field4)); //Modifying one field here //Six more times writer.WriteEndObject(); } 这不是很好的代码,而且必须要编写它真的很烦人。 有没有办法让Json.net自动序列化除一个属性以外的所有属性? 或者可能自动生成一个JObject并修改它?