如何从这种JSON格式提取数据?

时间:2018-07-11 13:10:29

标签: c# asp.net json

我有一个JSON文档,我正在尝试从该JSON文档中提取单个数据。但是,当我尝试提取时,我得到的只是一些不在文档中的数字。

这是文档:

user: [{
     serialNo: 1,
     details: [{ name: "John",
             job: "Receptionist" }]
 },
 {
     serialNo: 2,
     details: [{
             name: "Alan",
             job: "Salesman"
          }]
  }
]

所以我尝试这样做以提取名称“ Alan”

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var reader = new StreamReader(response.GetResponseStream()))
    {
        var js = new JavaScriptSerializer();
        var objText = reader.ReadToEnd();
        var data = objText[1][0].name;
    }
}

它返回给我的只是一个没有意义的数字,例如'123'或'467'等。

1 个答案:

答案 0 :(得分:4)

看看Json.NET - Newtonsoft。它也是一个可以在NuGet中找到的软件包,只需输入Newtonsoft :)。

然后您可以像这样建立模型:

第一个解决方案:

pi

第二种解决方法:

using Newtonsoft.Json;
using System;

namespace UsersJSON
{

    public class UsersRepository
    {
        public User[] Users;
    }

    public class User
    {
        public int serialNo;
        public string[] details;
    }

    class Program
    {
        static void Main(string[] args)
        {
            var json = @"{
  users: [
  {
    serialNo: 1,
    details: ['John', 'Receptionist']
  },
  {
    serialNo: 2,
    details: ['Alan', 'Salesman']
  }]
}";
            var usersList = JsonConvert.DeserializeObject<UsersRepository>(json);
            Console.WriteLine(usersList.Users[0].details[0]); // prints "John"
            Console.ReadLine();
        }
    }
}

两者都要求您稍微更改JSON输出。