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

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

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


当前回答

使用动态对象JavaScriptSerializer。

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

//test Result = "some data"

其他回答

或者,你可以使用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及以上版本

在c#中将JSON字符串转换为对象。使用下面的测试用例..这对我很管用。这里“MenuInfo”是我的c#类对象。

JsonTextReader reader = null;
try
{
    WebClient webClient = new WebClient();
    JObject result = JObject.Parse(webClient.DownloadString("YOUR URL"));
    reader = new JsonTextReader(new System.IO.StringReader(result.ToString()));
    reader.SupportMultipleContent = true;
}
catch(Exception)
{}

JsonSerializer serializer = new JsonSerializer();
MenuInfo menuInfo = serializer.Deserialize<MenuInfo>(reader);

另一种快速简单的半自动这些步骤的方法是:

take the JSON you want to parse and paste it here: https://app.quicktype.io/ . Change language to C# in the drop down. Update the name in the top left to your class name, it defaults to "Welcome". In visual studio go to Website -> Manage Packages and use NuGet to add Json.Net from Newtonsoft. app.quicktype.io generated serialize methods based on Newtonsoft. Alternatively, you can now use code like: WebClient client = new WebClient(); string myJSON = client.DownloadString("https://URL_FOR_JSON.com/JSON_STUFF"); var myClass = Newtonsoft.Json.JsonConvert.DeserializeObject(myJSON);

使用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的一种非常简单的方法。

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

一行代码解决方案。

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

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