繁体   English   中英

Newtonsoft.Json 如何使用智能引号解析 json 属性

[英]Newtonsoft.Json how to parse json property with smart quotes

我有 JSON 包含引号内的属性“”这里是一个例子

{ 
  "data1" : "value",
  “data2” : {
     property : "property value"
  }
} 

我的dto:

public class Data
{
    public string Data1 {get;set;}
    public object Data2 {get;set;}
}

和反序列化代码

static void Main(string[] args)
{
    var jsonString = "   { \"data1\" : \"value\",“data2” : {property: \"property value\"}} ";
    var data = JsonConvert.DeserializeObject<Data>(jsonString);
}

在反序列化时,我收到一个错误:

'Invalid property identifier character: “. Path 'data1', line 1, position 23.'. Peace of stack trace  at Newtonsoft.Json.JsonTextReader.ParseProperty()
   at Newtonsoft.Json.JsonTextReader.ParseObject()
   at Newtonsoft.Json.JsonTextReader.Read()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject ....

我有关于如何修复它的任何解决方法,也许有可能额外添加另一个属性标识符? 提前致谢。

您 JSON 只是无效(您可以使用验证器检查)

通过替换那些花哨的引号它变得有效,所以你应该考虑在解析它之前应用替换?

jsonString = jsonString.Replace('“', '"');

但最好的办法是在序列化过程中解决这个问题,因为 JSON 是无效的,并且会导致到处出现问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM