当字符串包含双引号时,如何将JSON读入JObject?

时间:2015-02-09 21:38:29

标签: c# json json.net

我有一段JSON,我想进入一个字符串供C#使用。问题是,当我转义所有双引号时,它似乎不再有效。例如:

 string jsonString = " {[ {    \"FieldId\": \"Fields.364\",    \"FieldName\": \"LoanNo\",    \"Precision\": \"0\"  } ,  {    \"FieldId\": \"Fields.4002\",    \"FieldName\": \"LastNameB\"  } ]}";
        JObject jsettings = JObject.Parse(jsonString);

是否有更简单的方法将JSON字符串转换为C#JObject?

1 个答案:

答案 0 :(得分:4)

就JSON而言,你实际上 实际没有任何双引号 - 字符串不包含任何反斜杠。您可以使用Console.WriteLine(jsonString);确认。

问题是你目前在对象中直接有一个数组 - 这是无效的JSON。

如果您更改它以使数组是属性,那很好:

string jsonString = " { \"foo\":[ { /* rest as before */ } ] }";

最终成为JSON:

{
  "foo": [
    {
      "FieldId": "Fields.364",
      "FieldName": "LoanNo",
      "Precision": "0"
    },
    {
      "FieldId": "Fields.4002",
      "FieldName": "LastNameB"
    }
  ]
}

(只需在您发布的代码后使用Console.WriteLine(jsettings);。)