尝试用c#将JSON字符串转换为对象。使用一个非常简单的测试用例:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
object routes_list = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
问题是routes_list从未被设置;它是一个未定义的对象。什么好主意吗?
尝试用c#将JSON字符串转换为对象。使用一个非常简单的测试用例:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
object routes_list = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
问题是routes_list从未被设置;它是一个未定义的对象。什么好主意吗?
当前回答
看起来您正在尝试反序列化到原始对象。您可以创建一个Class来表示要转换的对象。这在处理较大对象或JSON字符串的情况下是最有用的。
例如:
class Test {
String test;
String getTest() { return test; }
void setTest(String test) { this.test = test; }
}
那么你的反序列化代码将是:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
Test routes_list =
(Test)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
更多信息可以在本教程中找到: http://www.codeproject.com/Tips/79435/Deserialize-JSON-with-Csharp.aspx
其他回答
使用动态对象JavaScriptSerializer。
JavaScriptSerializer serializer = new JavaScriptSerializer();
dynamic item = serializer.Deserialize<object>("{ \"test\":\"some data\" }");
string test= item["test"];
//test Result = "some data"
使用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的一种非常简单的方法。
复制你的Json和粘贴在json2csharp的文本框,然后点击生成按钮。
使用下面的cs文件将生成一个cs类
var generatedcsResponce = JsonConvert.DeserializeObject(yourJson);
其中RootObject是生成的cs文件的名称;
另一种快速简单的半自动这些步骤的方法是:
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);
或者,你可以使用Newtownsoft。Json库如下:
using Newtonsoft.Json;
...
var result = JsonConvert.DeserializeObject<T>(json);
T是匹配JSON字符串的对象类型。