Jobight.Parse在有效的JSON上丢弃错误



'Newtonsoft.Json.JsonReaderException: Additional text encountered after finished reading JSON content: {. Path '', ...'上搜索至少3个,因此所有这些都追溯到无效的JSON。

我尝试了3个不同的验证器:

[{"Imported": "This registration imported on: 06/20/2016"},{"ContactInfoUpdated": " Street Address2: Suite 222   to  Shipping Address2:   "}]

,这三个都报告为有效。然而,运行时错误将相同的'遇到的其他文本丢弃...

if (!string.IsNullOrWhiteSpace(UserComments))
{
    JToken addresses;
    addresses = JObject.Parse(UserComments).GetValue("CarbonCopy"); //errors here
    if (!ReferenceEquals(null, addresses))
    {
      //stuff
    }
}

确定JSON关闭后没有意外字符,这是SQL:

UPDATE dbo.[Order] SET UserComments = '[{"Imported": "This registration imported on: 06/20/2016"},{"ContactInfoUpdated": " Street Address2: Suite 222   to  Shipping Address2:   "}]' WHERE idOrder =121050 

感谢Brian的提示,我发现这篇文章非常有帮助:

使用Jarray从JSON获取价值

我的JSON有些不寻常,因为它是一系列不同的对象。我的" UserComments"字段包含对而不是一系列名称/值对,而 name 保持不变,而是包含对的,其中 name 可以是' profile wastedited ',',em>',' ccrequested ','反馈'等等。

为了适应这种类型的结构,我需要针对 name 属性进行测试:

var fields = JToken.Parse(UserComments);
var isCC = "";
foreach (JObject content in fields.Children<JObject>())
{
    foreach (JProperty prop in content.Properties())
    {
        if (prop.Name == "CarbonCopy")
        isCC = prop.Value.ToString(); 
    }
}

resharper告诉我,我可以以上内容为:

foreach (JProperty prop in fields.Children<JObject>().SelectMany(content => content.Properties().Where(prop => prop.Name == "CarbonCopy")))
{
    isCC = prop.Value.ToString();
}

相关内容

  • 没有找到相关文章

最新更新