JavaScriptSerializer 不会将 Json 字符串转换为对象?
JavaScriptSerializer does not convert Json string to object?
下面的代码没有 return 任何错误,但仍然没有将 JSON 转换为对象
JSON 我从 API
得到的字符串
{
"genres": [
{
"id": 28,
"name": "Action"
},
{
"id": 12,
"name": "Adventure"
}
]
}
一般测试Class
public class Test
{
public int id;
public string Name;
}
下面的代码显示了我如何尝试将 JSON 字符串转换为测试列表 class
string JsontStr = GenreService.get();
var Serializer = new JavaScriptSerializer();
List<Test> a = (List<Test>)Serializer.Deserialize(JsontStr, typeof(List<Test>));
an image of what the object a has in it when the program has finished running
序列化程序不工作,因为 json 不是 Test 对象的数组。它实际上是一个 Genres 元素数组。在您的测试 class 中,名称必须小写才能匹配 json 字符串中的大小写。
public class Test
{
public int id {get;set;}
public string name {get;set;} // it should be all lowercase as well. Case matters
}
public class Genres
{
public List<Test> genres {get;set;}
}
string JsontStr = GenreService.get();
var Serializer = new JavaScriptSerializer();
Genres a = (Genres)Serializer.Deserialize(JsontStr, typeof(Genres));
我用 WebMethod 对你的案例做了一些测试,@Jawad 的回答是正确的。
测试对象列表的答案是流派,也就是我做的测试得到的
genres: [{id: 28, name: "Action"}, {id: 12, name: "Adventure"}]
因此,我只需像这样声明一个 WebMethod
[WebMethod]
public static int JSONApi(List<Test> genres)
并且序列化是自动完成的
希望它有助于澄清你的情况。
下面的代码没有 return 任何错误,但仍然没有将 JSON 转换为对象
JSON 我从 API
得到的字符串{
"genres": [
{
"id": 28,
"name": "Action"
},
{
"id": 12,
"name": "Adventure"
}
]
}
一般测试Class
public class Test
{
public int id;
public string Name;
}
下面的代码显示了我如何尝试将 JSON 字符串转换为测试列表 class
string JsontStr = GenreService.get();
var Serializer = new JavaScriptSerializer();
List<Test> a = (List<Test>)Serializer.Deserialize(JsontStr, typeof(List<Test>));
an image of what the object a has in it when the program has finished running
序列化程序不工作,因为 json 不是 Test 对象的数组。它实际上是一个 Genres 元素数组。在您的测试 class 中,名称必须小写才能匹配 json 字符串中的大小写。
public class Test
{
public int id {get;set;}
public string name {get;set;} // it should be all lowercase as well. Case matters
}
public class Genres
{
public List<Test> genres {get;set;}
}
string JsontStr = GenreService.get();
var Serializer = new JavaScriptSerializer();
Genres a = (Genres)Serializer.Deserialize(JsontStr, typeof(Genres));
我用 WebMethod 对你的案例做了一些测试,@Jawad 的回答是正确的。
测试对象列表的答案是流派,也就是我做的测试得到的
genres: [{id: 28, name: "Action"}, {id: 12, name: "Adventure"}]
因此,我只需像这样声明一个 WebMethod
[WebMethod]
public static int JSONApi(List<Test> genres)
并且序列化是自动完成的
希望它有助于澄清你的情况。