Tag: json.net

无法将当前JSON对象(例如{“name”:“value”})反序列化为类型’System.Collections.Generic.List`1

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Facebook; using Newtonsoft.Json; namespace facebook { class Program { static void Main(string[] args) { var client = new FacebookClient(acc_ess); dynamic result = client.Get(“fql”, new { q = “select target_id,target_type from connection where source_id = me()”}); string jsonstring = JsonConvert.SerializeObject(result); //jsonstring {“data”:[{“target_id”:9503123,”target_type”:”user”}]} List datalist = JsonConvert.DeserializeObject<List>(jsonstring); } […]

JSON.Net的“自检示循环检测”exception

我有一些代码将List对象发送到我的View(ASP.Net MVC): public ActionResult getRouteFromPart(int partId) { List routes = _routeService.GetRouteByPartType(partId); if (routes == null) { return this.AdvancedJsonResult(null, JsonRequestBehavior.AllowGet); } return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); } 但我在AdvancedJsonResult类中遇到exception: if (Data != null) { var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; string result = JsonConvert.SerializeObject(this.Data, this.Formatting, settings); response.Write(result); } 我已经尝试了“ReferenceLoopHanding.Ignore”技巧,它使exception静音,但列表仍未传递给视图。 […]

Newtonsoft.JSON无法使用TypeConverter属性转换模型

我有一个C#MVC应用程序,它将数据作为JSON字符串存储在XML文档中,也存储在MySQL数据库表中。 最近我收到了在MySQL数据库字段中存储JSON字符串的要求,要通过Newtonsoft.Json转换为C#对象 ,所以我决定实现一个TypeConverter将JSON字符串转换为自定义C#模型。 不幸的是,当TypeConverter属性添加到我的C#Model时,我无法在我的解决方案中的任何地方使用以下命令来反序列化我的JSON字符串: JsonConvert.DeserializeObject(json); 删除属性可以解决问题但是这会阻止我将MySQL DB字段转换为自定义C#对象。 这是我添加了TypeConverter属性的C#模型 : using System.ComponentModel; [TypeConverter(typeof(FooConverter))] public class Foo { public bool a { get; set; } public bool b { get; set; } public bool c { get; set; } public Foo(){} } 这是我的TypeConverter类 : using Newtonsoft.Json; using System; using System.ComponentModel; public class FooConverter : TypeConverter { public […]

Json.net序列化特定的私有字段

我有以下课程: public class TriGrid { private List _hexes; //other private fields… //other public proprerties } 我的目标是仅序列化_hexes字段,因此我创建了以下ContractResolver: internal class TriGridContractResolver : DefaultContractResolver { protected override List GetSerializableMembers(Type objectType) { return new List { objectType.GetMember(“_hexes”, BindingFlags.NonPublic | BindingFlags.Instance)[0] }; } } 当我想序列化TriGrid的一个实例时,我做了: var settings = new JsonSerializerSettings() { ContractResolver = new TriGridContractResolver() }; var json = JsonConvert.SerializeObject(someTriGrid, […]

如何在json反序列化期间忽略未知的枚举值?

当我的枚举与json属性中提供的字符串值不匹配时,如何让Json.net不要抛出? 当我根据当前文档创建枚举时会发生这种情况,但第三方API稍后会添加更多枚举值。 我很高兴将特殊值标记为Unknown或使用可空的枚举,并且不匹配的值将返回null。

将字典序列化为数组(键值对)

Json.Net通常将Dictionary序列化为集合; “MyDict”: { “Apples”: { “Taste”: 1341181398, “Title”: “Granny Smith”, }, “Oranges”: { “Taste”: 9999999999, “Title”: “Coxes Pippin”, }, } 哪个好。 从环顾四周看似乎是大多数人想要的东西。 但是,在这种特殊情况下,我想在我的Dictionary和Array格式之间进行序列化; “MyDict”: [ “k”: “Apples”, “v”: { “Taste”: 1341181398, “Title”: “Granny Smith”, } }, “k:”: “Oranges”, “v:”: { “Taste”: 9999999999, “Title”: “Coxes Pippin”, } }, ] 使用现有的字段类型有一种简单的方法吗? 有没有我可以注释的属性?