尝试用c#将JSON字符串转换为对象。使用一个非常简单的测试用例:

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
object routes_list = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");

问题是routes_list从未被设置;它是一个未定义的对象。什么好主意吗?


当前回答

或者,你可以使用Newtownsoft。Json库如下:

using Newtonsoft.Json;
...
var result = JsonConvert.DeserializeObject<T>(json);

T是匹配JSON字符串的对象类型。

其他回答

正如tripletdad99所说

var result = JsonConvert.DeserializeObject<T>(json);

但如果你不想创建一个额外的对象,你可以用Dictionary来代替

var result = JsonConvert.DeserializeObject<Dictionary<string, string>>(json_serializer);

Newtonsoft比java脚本序列化器. ...更快这个依赖于Newtonsoft的NuGet包,这个包很流行,比默认的序列化器更好。

一行代码解决方案。

var myclass = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(Jsonstring);

Myclass oMyclass = Newtonsoft.Json.JsonConvert.DeserializeObject<Myclass>(Jsonstring);

使用动态对象JavaScriptSerializer。

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
dynamic item = serializer.Deserialize<object>("{ \"test\":\"some data\" }");
string test= item["test"];

//test Result = "some data"

让我们假设你有一个名为Student的类,它有以下字段,它有一个将JSON作为输入并返回字符串Student Object的方法。我们可以使用JavaScriptSerializer在这里转换JSON字符串到c#对象。std是一个JSON字符串。

  public class Student
{
   public string FirstName {get;set:}
   public string LastName {get;set:}
   public int[] Grades {get;set:}
}

public static Student ConvertToStudent(string std)
{
  var serializer = new JavaScriptSerializer();

  Return serializer.Deserialize<Student>(std);
 }

或者,你可以使用Newtownsoft。Json库如下:

using Newtonsoft.Json;
...
var result = JsonConvert.DeserializeObject<T>(json);

T是匹配JSON字符串的对象类型。