0

假设我有一个示例 Json 格式字符串为

string per1 = @"[{""Email"":""AAA"",""mj_campaign_id"":""22"",""mj_contact_id"":""PPP"",""customcampaign"":""AAA"",""blocked"":""22"",""hard_bounce"":""PPP"",""blocked"":""22"",""hard_bounce"":""PPP""},"
                           + @"{""Email"":""BBB"",""mj_campaign_id"":""25"",""mj_contact_id"":""QQQ"",""customcampaign"":""AAA"",""blocked"":""22"",""hard_bounce"":""PPP"",""blocked"":""22""},"
                           + @"{""Email"":""CCC"",""mj_campaign_id"":""38"",""mj_contact_id"":""RRR"",""customcampaign"":""AAA"",""blocked"":""22"",""hard_bounce"":""PPP""}]";

我正在尝试使用反序列化它

var result = JsonConvert.DeserializeObject(per1);

只要字符串的所有行都具有以下属性的值,它就可以正常工作 Email、mj_campaign_id、mj_contact_id、customcampaign、blocked、hard_bounce、error_related_to、error。但是当我在某些行中跳过一些 sttribute 值时,它会抛出一个错误说

无法将 Newtonsoft.Json.Linq.JValue 添加到 Newtonsoft.Json.Linq.JObject。

任何帮助,将不胜感激。谢谢

4

1 回答 1

0

您的错误是因为您没有为需要执行的对象分配值。如果您删除该值,至少添加一个空字符串。

那说!这就是手动构建 JSON 字符串的危险。如果可以的话,你应该总是避免它。如果您正在从网页阅读,该网页应该为您序列化有效负载,然后您应该使用您用来拉入有效负载的任何内容(控制器、restful 服务等)对其进行反序列化。.NET 的美妙之处在于它为您处理所有这些管道,如果您尝试重新发明 .NET 轮子,您真的会遇到痛苦的问题

于 2013-03-13T22:12:32.157 回答