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

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

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


当前回答

或者,你可以使用System.Text.Json库,如下所示:

using System.Text.Json;
...
var options = new JsonSerializerOptions()
            {
                PropertyNameCaseInsensitive = true
            });
var result = JsonSerializer.Deserialize<List<T>>(json, options);

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

System.Text.Json可以在: .NET Core 2.0及以上版本 .NET Framework 4.6.1及以上版本

其他回答

首先,你必须包括这样的库:

using System.Runtime.Serialization.Json;

DataContractJsonSerializer desc = new DataContractJsonSerializer(typeof(BlogSite));
string json = "{\"Description\":\"Share knowledge\",\"Name\":\"zahid\"}";

using (var ms = new MemoryStream(ASCIIEncoding.ASCII.GetBytes(json)))
{
    BlogSite b = (BlogSite)desc.ReadObject(ms);
    Console.WriteLine(b.Name);
    Console.WriteLine(b.Description);
}

使用动态对象JavaScriptSerializer。

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

//test Result = "some data"

正如tripletdad99所说

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

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

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

添加这个ddl来引用您的项目:System.Web.Extensions.dll

使用System.Web.Script.Serialization;

public class IdName
{
    public int Id { get; set; }
    public string Name { get; set; }
}


   string jsonStringSingle = "{'Id': 1, 'Name':'Thulasi Ram.S'}".Replace("'", "\"");
   var entity = new JavaScriptSerializer().Deserialize<IdName>(jsonStringSingle);

   string jsonStringCollection = "[{'Id': 2, 'Name':'Thulasi Ram.S'},{'Id': 2, 'Name':'Raja Ram.S'},{'Id': 3, 'Name':'Ram.S'}]".Replace("'", "\"");
   var collection = new JavaScriptSerializer().Deserialize<IEnumerable<IdName>>(jsonStringCollection);

使用Newtonsoft,您可以轻松完成您的要求。Json库。我正在写下下面的一个例子,看看它。

为您接收的对象类型初始化:

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }

}

代码:

static void Main(string[] args)
{

      string json = "{\"ID\": 1, \"Name\": \"Abdullah\"}";

      User user = JsonConvert.DeserializeObject<User>(json);

      Console.ReadKey();
}

这是解析json的一种非常简单的方法。