JSON字符串在JSON.parse中失败但传递了JsonConvert.DeserializeObject

时间:2014-06-18 09:22:18

标签: c# javascript json json.net

我的C#类是

public class Man
{
    public string name {get; set;}
}

要反序列化的字符串就像这样

var content = "[{name: \"john\"}]"

现在在保存到db之前,我正在检查是否可以将字符串反序列化为C#对象然后存储它。该检查通过

JsonConvert.DeserializeObject<List<Man>>(content)

所以我在db中保存了这个字符串但是当我在javascript中对保存的字符串执行JSON.parse时,它崩溃并出现错误

JSON.parse("[{name: \"john\"}]")
SyntaxError: Unexpected token n

现在我明白通过围绕密钥(“名称”)的周围引号可以解决这个问题。这是正确的字符串,适用于JSON.parse和JsonConvert.DeserializeObject

var content = "[{\"name\": \"john\"}]

问题是我在db中已经有很多这样生成错误的字符串,只能在JSON.parse上崩溃。转换此类字符串的最佳方法是什么,以便JSON.parse可以工作?比string.replace更好的东西 请注意,与给出的示例相比,实际字符串非常大且复杂。

1 个答案:

答案 0 :(得分:0)

即使是using Newtonsoft.Json;格式的json数据,您也可以使用var content = "[{name: \"john\"}]" DeserializeObject对象。

值包含以下数据:{StyleId:"1710","SelectedItemToColorMap":{1391:"583",21531:"7733"}}

 var jsondata = JsonConvert.DeserializeObject(value);

在DeserializeObject之后,jsondata看起来像

{
  "StyleId": "1710",
  "SelectedItemToColorMap": {
    "1391": "583",
    "21531": "7733"
  }
}