在C#中反序列化JSON数组(或列表)

sad*_*ine 17 c# asp.net ajax serialization json

这是基本代码:

public static string DeserializeNames()
{

    jsonData = "{\"name\":[{\"last\":\"Smith\"},{\"last\":\"Doe\"}]}";

    JavaScriptSerializer ser = new JavaScriptSerializer();

    nameList myNames = ser.Deserialize<nameList>(jsonData);

    return ser.Serialize(myNames);
}

//Class descriptions

public class name
{

   public string last { get; set; }

}

public class nameList
{

   public List<name> { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我试过了:

nameList myNames = ser.Deserialize<nameList>(jsonData);
Run Code Online (Sandbox Code Playgroud)

和:

List<name> myNames = ser.Deserialize<List<name>>(jsonData);
Run Code Online (Sandbox Code Playgroud)

并且都不起作用.有人有主意吗?

Jac*_*cob 17

这段代码适合我:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;

namespace Json
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(DeserializeNames());
            Console.ReadLine();
        }

        public static string DeserializeNames()
        {
            var jsonData = "{\"name\":[{\"last\":\"Smith\"},{\"last\":\"Doe\"}]}";

            JavaScriptSerializer ser = new JavaScriptSerializer();

            nameList myNames = ser.Deserialize<nameList>(jsonData);

            return ser.Serialize(myNames);
        }

        //Class descriptions

        public class name
        {
            public string last { get; set; }
        }

        public class nameList
        {
            public List<name> name { get; set; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 啊,非常好的答案.我使用DeseriliseObject和一个强制转换列表 - 这是正常的.Tjanks :) +1 (2认同)

Das*_*jes 5

从这里下载Json.NET http://james.newtonking.com/projects/json-net.aspx

name deserializedName = JsonConvert.DeserializeObject<name>(jsonData);
Run Code Online (Sandbox Code Playgroud)