Tag: json.net

JSON.net将C#对象序列化为JSON问题

我正在尝试使用JSON.net库将C#对象序列化为JSON。 我遇到的问题是正在创建的字符串中包含“。”。 下面是通过JsonConvert.SerializeObject返回的字符串: { "ComId": "AAAiB+AAHAALOaFAAL", "CovId": "AAABC9AAPAAAZYUAAI", "EffectiveDate": "\\/Date(1329368400000-0500)\\/", "ExpirationDate": "\\/Date(1360990800000-0500)\\/", "State": "TX", "DeductibleAmount": 500.0, "DeductibleType": "PD" } 通过JSONLint运行字符串返回: Parse error on line 1: { "ComId": & —–^ Expecting ‘STRING’, ‘}’ 下面是我尝试序列化为JSON的对象: public class CommonInfoModel { public virtual string ComId { get; set; } public virtual string CovId { get; set; } [Display(Name = […]

在C#中使用newtonsoft查找并返回JSON差异?

我想得到一个使用Newtonsoft进行比较时不匹配的JSON部分列表。 我有这个代码比较: JObject xpctJSON = JObject.Parse(expectedJSON); JObject actJSON = JObject.Parse(actualJSON); bool res = JToken.DeepEquals(xpctJSON, actJSON); 但找不到任何可以返回差异的东西。

json.net; 序列化entity framework对象(循环引用错误)

我有一个entity framework实体,我想序列化为一个json对象。 我环顾四周,发现json.net(http://james.newtonking.com/projects/json-net.aspx)应该能够使用“开箱即用”的循环引用来序列化对象。 所以我尝试使用 string json = JsonConvert.SerializeObject(/* my ef entity */); 但我仍然得到同样的错误。 问题可能是我需要使用ReferenceLoopHandling.Ignore和ContractResolver ,但我不知道如何使用它们。 任何帮助深表感谢! 谢谢

使用Json.Net失败的多态JSON反序列化

我正在尝试使用自定义JsonConverter将一些JSON反序列化为各种子类 我几乎遵循了这一点。 我的抽象基类: abstract class MenuItem { public String Title { get; set; } public String Contents { get; set; } public List Submenus { get; set; } public String Source { get; set; } public String SourceType { get; set; } public abstract void DisplayContents(); } 而我派生的JsonConverter : class MenuItemConverter : JsonConverter { public […]

如何使用json.net构建序列化的对象层次结构?

我正在尝试正确编写代码来构建数据结构以序列化为json。 我正在使用json.net。 我不想创建一堆类来保存这些数据,因为我认为应该有一些类已经在json.net中执行此操作 我已经在一系列嵌套循环中获得了所需的所有数据,现在我只想在它上运行JsonConvert.SerializeObject之前将它们添加到对象层次结构中。 我已经尝试过这样的代码,但似乎没有用 JArray container = new JArray(); container.Add(new JObject(new JProperty(“name”, “Client1”), new JProperty(“projects”, new JArray()))); container[0].AddAfterSelf(new JObject(new JProperty(“projects”, new JArray()))); container[1].AddAfterSelf(new JObject(new JProperty(“projects”, “Project2”))); container[1].AddAfterSelf(new JObject(new JProperty(“projects”, “Project3”))); container.Add(new JProperty(“name”, “Client2”)); var test = JsonConvert.SerializeObject(container); 问题是当我使用[i]时。 或者ElementAt(i)访问结构中的某个地方,或者缺少.Add()或者没有.ElementAt。 如何逐步完成数据结构以使下面的输出良好,或者我是否必须为所有这些创建自己的容器类? 这是我想要的数据格式。 [ { “name”: “student1”, “projects”: [ { “name”: “Project1”, “tasks”: [ { “name”: […]

JSON.NET:如何根据父(持有者)对象值反序列化接口属性?

我有这样的课程 class Holder { public int ObjType { get; set; } public List Objects { get; set; } } abstract class Base { // … doesn’t matter } class DerivedType1 : Base { // … doesn’t matter } class DerivedType2 : Base { // … doesn’t matter } 使用WebAPI我想要接收对象Holder并正确反序列化它。 基于ObjType值,我需要将Objects属性反序列化为List ( ObjType == 1 )或List […]

JSON.Net自定义合同序列化和集合

我正在尝试创建一个IContractResolver来简化我在WebApi项目上的安全处理。 我在尝试什么: 我想基于一组动态条件序列化某些对象/属性(例如,调用端点的用户的角色)。 所以我实现了一个在Interface的CreateProperty覆盖中检查的自定义属性,并将ShouldSerialize函数设置为我自己的逻辑。 我现在的问题是,是否有可能有条件地序列化某个列表中的完整对象? 而不是在预处理步骤中过滤列表(这很容易出错,如果我更改了我的对象),我希望它由当前的ContractResolver递归处理。 在某种程度上,我试图得到这样的东西: override void CreateObject(JSONObject ob){ if ( ob.DeclaringType == MyType) { ob.ShouldSerialize = instance => {[…] }; //Custom Logic } } 我错过了覆盖,这根本不可能吗? 有没有更好的方法来实际做到这一点,而我不必“预先解析”我的所有价值观?

如何将json属性反序列化为类属性?

我的JSON文件 [ { “amount”:”1000000.0″, “check_number”:1, “payment_number”:5, “attachments”:[ { “id”:5324, “url”:”http://www.example.com/”, “filename”:”january_receipt_copy.jpg” } ] } ] 我的class级档案 public class Attachment { public int id { get; set; } public string url { get; set; } public string filename { get; set; } } public class AccountDetail { public string amount { get; set; } public int […]

在反序列化时如何忽略JSON对象数组中的空白数组?

我正在使用Json.NET反序列化JSON。 如何在反序列化期间忽略在对象数组内意外发生的空白数组 ? 我在本网站http://json.parser.online.fr/上测试了来自第三方的以下JSON,确认其格式正确: { “total_events”: 3551574, “json.appID”: [ { “count”: 3551024, “term”: 1 }, { “count”: 256, “term”: 2 }, [] /* <—– I need to ignore this empty array */ ], "unique_field_count": 2 } 我想将它反序列化为以下模型: public class RootObject { [JsonProperty(“total_events”)] public int TotalEvents { get; set; } [JsonProperty(“json.appID”)] public List AppIds { get; […]

C# – JObject.Parse – 无效的JSON

我正在使用返回JSON的API。 我有一个调用api的方法,并解析所需节点的JSON响应。 到目前为止,一切都运行正常,除了最新的JSON响应似乎格式不正确。 其他回复如下: { “Keyword”:”\”marhope\””, “TermKey”:null, “Customers”:[ { “Memberships”:[ ], “CompanyId”:0, “ObjectId”:112974, “ObjectType”:”Customer”, } ] } 我使用JObject.Parse按名称返回适当的节点。 最新的JSON响应如下: { [ { “AnimalId”:9079117, “SpeciesCode”:”XX”, } ] } 如您所见,没有“名称”,JSON稍微无效。 我怎么解析这个。 对于第一个例子,我使用下面的代码,但现在JSON没有“名称”,我不知道如何处理这个问题,想法? JObject results = JObject.Parse(csr.SearchCustomer(1, 1, 870, term)); foreach (var resp in results[“Customers”]) { string obj = (string)resp[“CompanyId”]; }