将JSON字符串反序列化为c#对象

Sha*_*hty 21 c# json c#-4.0 asp.net-mvc-3

我的应用程序是在用C#编码的Asp.Net MVC3中.这就是我的要求.我想要一个以下格式的对象.当我反序列化Json字符串时,应该实现这个对象.

var obj1 = new { arg1=1,arg2=2 };
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用以下代码后:

string str = "{\"Arg1\":\"Arg1Value\",\"Arg2\":\"Arg2Value\"}";
JavaScriptSerializer serializer1 = new JavaScriptSerializer();
object obje = serializer1.Deserialize<object>(str);
Run Code Online (Sandbox Code Playgroud)

我得到的对象即obje不作为obj1

在此输入图像描述

在这个示例中,我的JSON字符串是静态的,但实际上JSON字符串将是动态生成的运行时,因此我无法一直获得Arg1和Arg2.

Mar*_*arc 19

我认为JavaScriptSerializer不会创建动态对象.

所以你应该首先定义类:

class MyObj {
    public int arg1 {get;set;}
    public int arg2 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

并反序化,而不是object:

serializer.Deserialize<MyObj>(str);
Run Code Online (Sandbox Code Playgroud)

不是测试,请尝试.


小智 7

我相信你在寻找这个:

string str = "{\"Arg1\":\"Arg1Value\",\"Arg2\":\"Arg2Value\"}";
JavaScriptSerializer serializer1 = new JavaScriptSerializer();
object obje = serializer1.Deserialize(str, obj1.GetType());
Run Code Online (Sandbox Code Playgroud)


小智 5

使用此代码:

var result=JsonConvert.DeserializeObject<List<yourObj>>(jsonString);
Run Code Online (Sandbox Code Playgroud)