如果存在内部字符串数组,则使用Json.NET反序列化JSON会失败

时间:2015-01-20 15:21:30

标签: c# arrays json json.net

我正在使用Json.NET 6.x,我注意到了奇怪的行为:

如果我想反序列化这个简单的JSON,我会收到一个错误:

反序列化的代码:

 object o = Newtonsoft.Json.JsonConvert.DeserializeObject(text);

和JSON:

[
  {
    "Username": "tb386",
    "TimestampUpdated": "2015-01-19T18:49:52.771571+01:00",
    "AuthTokens": [
        "Ua7JR5E7hSAxjafp6dpMrvw3HlICW3ZZdDuArMaU5ks="
      ]
  }
]

我得到的错误是:

  

解析值时遇到意外的字符:U。路径'',第0行,位置0。

如果删除数组,它可以正常工作。但我所要做的就是删除数组中的字符串,使其为空:

[
  {
    "Username": "tb386",
    "TimestampUpdated": "2015-01-19T18:49:52.771571+01:00",
    "AuthTokens": [ ]
  }
]

然后它工作正常。我还应该注意,序列化的JSON是由Newtonsoft库生成的,所以源代码是同一个库!

如果我在带有数组的JSON上尝试验证器(如http://jsonlint.com/),它就可以了!

有人可以帮助我吗?

  

附加信息:即使我在VS中添加了一个字符串并编写了硬编码的JSON,它也会失败!

string text =  "[ {\"Username\": \"tb386\",\"TimestampUpdated\": \"2015-01-19T18:49:52.771571+01:00\",\"AuthTokens\": [\"Ua7JR5E7hSAxjafp6dpMrvw3HlICW3ZZdDuArMaU5ks=\"] } ]";
  
object o = Newtonsoft.Json.JsonConvert.DeserializeObject(text);

Newtonsoft dll的版本信息:

enter image description here

0 个答案:

没有答案