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)

并且序列化是自动完成的

希望它有助于澄清你的情况。