我有这个字符串存储在我的数据库:

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

这个字符串已经是JSON格式,但我想把它转换成一个JObject或JSON对象。

JObject json = new JObject();

我尝试了json = (JObject)str;铸,但它没有工作,所以我怎么能做到呢?


当前回答

如果你的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);

其他回答

如果你不想要或不需要类型化对象,请尝试:

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

对于类型化对象,可以尝试:

using Newtonsoft.Json;

// single    
Foo foo  = JsonConvert.DeserializeObject<Foo>(str);

// or as a list
List<Foo> foos = JsonConvert.DeserializeObject<List<Foo>>(str); 

你可以这样尝试:

string output = JsonConvert.SerializeObject(jsonStr);

JObject定义了Parse方法:

JObject json = JObject.Parse(str);

你可能想要引用Json。网络文档。

有一种有趣的方法来实现另一个目标,那就是用一个非常强大的工具来实现一个基于json的强类型类,我几天前第一次使用这个工具来将tradedoubler json结果转换为类

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

string result = await resp.Content.ReadAsStringAsync();
            List<ListView11> _Resp = JsonConvert.DeserializeObject<List<ListView11>>(result);
            //List<ListView11> _objList = new List<ListView11>((IEnumerable<ListView11>)_Resp);

            IList usll = _Resp.Select(a => a.lttsdata).ToList();
            // List<ListViewClass> _objList = new List<ListViewClass>((IEnumerable<ListViewClass>)_Resp);
            //IList usll = _objList.OrderBy(a=> a.ReqID).ToList();
            Lv.ItemsSource = usll;