Tag: json.net

解析JSON.net中的枚举

我正在使用JSON.net(也许v3.5ish?它来自2010年10月)。 我试图将一些json反序列化为枚举: geometryType:“esriGeometryPolygon” 我有这个枚举: /// /// The geometry type. /// [DataContract] public enum GeometryType { /// /// Refers to geometry type Envelope /// [EnumMember(Value = “esriGeometryEnvelope”)] Envelope, /// /// Refers to geometry type MultiPoint /// [EnumMember(Value = “esriGeometryMultipoint”)] MultiPoint, /// /// Refers to geometry type MapPoint /// [EnumMember(Value = “esriGeometryPoint”)] Point, /// /// Refers to […]

Newtonsoft.Json SerializeObject没有转义反斜杠

鉴于代码: dynamic foo = new ExpandoObject(); foo.Bar = “something”; string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo); 输出如下: “{\”Bar\”:\”something\”}” 调试大型json文档时很难阅读 – 使用Newtonsoft.Json的内置function(不是正则表达式或可能破坏事物的黑客攻击)有没有办法使输出成为一个带有valie的字符串: {Bar: “something”}

如何使用json.NET反序列化动态命名的根节点

这是json文件的一个示例: { “John Smith”: { “id”: “72389”, “email”: “johnsmith@gmail.com”, “books”: [ { “id”: “0”, “title”: “The Hunger Games”, “rating”: “5” }, { “id”: “1”, “title”: “Harry Potter and the Order of the Phoenix”, “rating”: “3” }, ], “magazines”: [ { “id”: “2”, “title”: “National Geographic”, “rating”: “1” }, { “id”: “3”, “title”: “Wired”, “rating”: “4” […]

将JSON反序列化为多个属性

我正在针对返回JSON数据的第三方API编程,但格式可能有点奇怪。 某些属性可以是对象(包含Id属性),也可以是字符串(对象的Id)。 例如,以下两个都是有效的: { ChildObject: ‘childobjectkey1’ } 和 { ChildObject: { Id: ‘childobjectkey1’, // (other properties) } } 我正在尝试使用JSON.net将其反序列化为强类型类,但到目前为止还没有太多运气。 我最好的想法是将它序列化为两个属性,一个是字符串,另一个是对象,并为每个属性使用自定义JsonConverter来允许变量行为: public abstract class BaseEntity { public string Id { get; set; } } public class ChildObject : BaseEntity { } public class MyObject { [JsonProperty(“ChildObject”)] [JsonConverter(typeof(MyCustomIdConverter))] public string ChildObjectId { get; set; } [JsonProperty(“ChildObject”)] [JsonConverter(typeof(MyCustomObjectConverter))] […]

使用Json.NET反序列化键值对的数组

鉴于以下json: [ {“id”:”123″, … “data”:[{“key1″:”val1”}, {“key2″:”val2”}], …}, … ] 这是一个更大的树的一部分,我如何将“数据”属性反序列化为: List Data { get; set; } 要么 List Data { get; set; } 要么 Dictionary Data { get; set; } 使用Json.NET? 两个版本都可以(我更喜欢List of MyCustomClass)。 我已经有一个包含其他属性的类,如下所示: public class SomeData { [JsonProperty(“_id”)] public string Id { get; set; } … public List Data { get; set; } […]

Json.Net PopulateObject附加列表而不是设置值

我在.Net 4.5上使用Json.Net,当在下面的对象上使用populate对象时,它会使用json的内容递增List,而不是设置其值。 Json.Net JsonConvert.PopulateObject(string, object) 类 class MySettingSubClass { public List MyStringList1 = new List(){“one”, “two”, “three”} } class MySetting { public string MyString = “MyString”; public int MyInt = 5; public MySettingSubClass MyClassObject = new MySettingSubClass(); public List MyStringList2 = new List{“one”, “two”, “three”}; } 当他们最初加载时,一切都是正确的,但是从JSON重新加载MyStringLists都是重复的”one”, “two”, “three”, “one”, “two”, “three”

使用注释使用Json.NET将嵌套的JSON结构反序列化为展平类

是否可以使用JsonProperty批注将嵌套的Json属性映射到非嵌套的.NET成员? 假设你有一些这样的Json: { “id”:9999, “created_date”:”Thu, 23 Jun 2011 12:56:24 +0000″, “pos”:{ “type”:”someType”, “coordinates”:[ 59.323, 18.0654 ] } } 并希望将其反序列化为扁平类MyClass使用 JsonConvert.DeserializeObject(jsonstr); 可以使用注释将Json坐标列表映射到下面的类中的Lat和Lng: public class MyClass { [JsonProperty(“id”)] public int Id { get; set; } [JsonProperty(“created_date”)] public DateTime Created { get; set; } [JsonProperty(“????”)] public float Lat { get; set; } [JsonProperty(“?????”)] public float Lng { get; […]

Json.net自定义枚举转换器

我目前正在使用Json.net在我的应用程序中使用json。 我使用的API为枚举发送了一个特定的字符串格式,例如: 对于类型为TemperatureType的枚举,值为fahrenheit, Celcius json值为: {“result”:[“TemperatureType_fahrenheit”,”TemperatureType_Celcius”]} 我想使用转换器直接管理它以获得IList但也适用于其他枚举类型。 有人有想法吗? 我尝试使用自定义JsonConverter: if (reader.TokenType == JsonToken.String && reader.Value != null) { string value = reader.Value.ToString(); var splitValues = value.Split(‘_’); if (splitValues.Length == 2) { var type = Type.GetType(splitValues[0]); return Enum.Parse(type, splitValues[1]); } } 问题是GetType属性,因为我没有指示所需类型和没有命名空间的参数

将JSON对象反序列化为C#列表

我正在尝试使用Bill Reiss的教程在C#中反序列化给定的JSON文件。 对于非列表中的XML数据,此方法非常有效,但我希望使用以下结构反序列化JSON文件: public class Data { public string Att1 { get; set; } public string Att2 { get; set; } public string Att3 { get; set; } public string Att4 { get; set; } } public class RootObject { public List Listname { get; set; } } 我的问题是使用JSON.Net创建/将数据放入列表,然后在XAML页面上显示列表的能力。 到目前为止我的想法(这是行不通的): var resp = await client.DoRequestJsonAsync(“URL”); […]

Json.NET不区分大小写的属性反序列化

Json.NET将“不区分大小写的属性反序列化”列为广告function之一。 我已经读过,将首先尝试匹配指定属性的大小写,如果未找到匹配项,则执行不区分大小写的搜索。 但这似乎不是默认行为。 请参阅以下示例: var result = JsonConvert.DeserializeObject<KeyValuePair>( “{key: 123, value: \”test value\”}” ); // result is equal to: default(KeyValuePair) 如果更改JSON字符串以匹配属性的情况(“Key”和“Value”vs“key”和“value”),那么一切都很好: var result = JsonConvert.DeserializeObject<KeyValuePair>( “{Key: 123, Value: \”test value\”}” ); // result is equal to: new KeyValuePair(123, “test value”) 有没有办法执行不区分大小写的反序列化?