将JSON字符串转换为JSON对象C#


161

我将此字符串存储在数据库中:

str = "{ "context_name": { "lower_bound": "value", "upper_bound": "value", "values": [ "value1", "valueN" ] } }"

该字符串已经是JSON格式,但是我想将其转换为JObject或JSON Object。

JObject json = new JObject();

我尝试了json = (JObject)str;演员表,但没有成功,该怎么办?

Answers:


298

JObjectParse为此定义方法:

JObject json = JObject.Parse(str);

您可能要参考Json.NET 文档


5
这将转换为{string},并将多余的花括号添加到您的字符串中。
Vasil Valchev

62

如果您不需要或不需要输入对象,请尝试:

using Newtonsoft.Json;
// ...   
dynamic json  = JsonConvert.DeserializeObject(str);

或尝试输入类型的对象,请尝试:

Foo json  = JsonConvert.DeserializeObject<Foo>(str)

如果传入的json字符串包含一个集合,这也将与T列表一起使用:List <Foo> json = JsonConvert.DeserializeObject <List <Foo >>(str)
A. Varma

22

这有效

    string str = "{ 'context_name': { 'lower_bound': 'value', 'pper_bound': 'value', 'values': [ 'value1', 'valueN' ] } }";
    JavaScriptSerializer j = new JavaScriptSerializer();
    object a = j.Deserialize(str, typeof(object));

'JavaScriptSerializer'的名称空间:System.Web.Script.Serialization;
BernieSF

绝对为我工作。在将双引号替换为单引号之后使用JObject可以达到目的。谢谢!!!
卡洛斯·帕拉

System.Web.Script.Serialization仅在.Net完整框架中可用。
诺吉

7

有一个有趣的方法可以实现另一个目标,即使用强大的工具在json上建立强类型类,我几天前第一次使用该工具将tradedoubler json结果转换为类

是一个简单的工具:复制您的json源代码粘贴,几秒钟后,您将获得一个面向json的强类型类。通过这种方式,您将使用这些功能更强大且更易于使用的类。

希望对您有所帮助


正是我所需要的!因此,我不必从javascript中创建的内容定义复杂的类结构
NicolasZ 2015年

虽然这不能回答问题。这是一个省时的工具。
Valamas


1

这对我有用 JsonConvert

var result = JsonConvert.DeserializeObject<Class>(responseString);

0

对于JObject而言,这不起作用,它适用于简单的json格式数据。我已尝试将以下json格式数据的数据反序列化为该类型,但未得到响应。

对于这个杰森

{
  "Customer": {
    "id": "Shell",
    "Installations": [
      {
        "id": "Shell.Bangalore",
        "Stations": [
          {
            "id": "Shell.Bangalore.BTM",
            "Pumps": [
              {
                "id": "Shell.Bangalore.BTM.pump1"
              },
              {
                "id": "Shell.Bangalore.BTM.pump2"
              },
              {
                "id": "Shell.Bangalore.BTM.pump3"
              }
            ]
          },
          {
            "id": "Shell.Bangalore.Madiwala",
            "Pumps": [
              {
                "id": "Shell.Bangalore.Madiwala.pump4"
              },
              {
                "id": "Shell.Bangalore.Madiwala.pump5"
              }
            ]
          }
        ]
      }
    ]
  }
}

0

如果您的JSon字符串具有“”双引号而不是单引号',并且\ n作为下一行的指示符,那么您需要将其删除,因为这不是正确的JSon字符串,如下所示:

            SomeClass dna = new SomeClass ();
            string response = wc.DownloadString(url);
            string strRemSlash = response.Replace("\"", "\'");
            string strRemNline = strRemSlash.Replace("\n", " ");
            // Time to desrialize it to convert it into an object class.
            dna = JsonConvert.DeserializeObject<SomeClass>(@strRemNline);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.