【问题标题】:How to deserialize json object in windows store app如何在 Windows 商店应用程序中反序列化 json 对象
【发布时间】:2015-11-03 12:30:16
【问题描述】:

这是我的 web api 方法。

public class EmployeeController : ApiController
{
    employee[] employee = new employee[]
    {
      new employee{Employee_Id=1,Employee_Name="Richa",Employee_Address="Noida",Employee_Contact=12567,Employee_Salary=5000},
      new employee{Employee_Id=2,Employee_Name="Megha",Employee_Address="Delhi",Employee_Contact=98754,Employee_Salary=5435},
      new employee{Employee_Id=3,Employee_Name="Gaurav",Employee_Address="Noida",Employee_Contact=33333,Employee_Salary=4233},
      new employee{Employee_Id=4,Employee_Name="Suyash",Employee_Address="Delhi",Employee_Contact=5555,Employee_Salary=2342},
      new employee{Employee_Id=5,Employee_Name="Manish",Employee_Address="Noida",Employee_Contact=84576,Employee_Salary=4555},
      new employee{Employee_Id=6,Employee_Name="Manish",Employee_Address="Noida",Employee_Contact=84576,Employee_Salary=4555},
      new employee{Employee_Id=7,Employee_Name="Ram",Employee_Address="Delhi",Employee_Contact=6456,Employee_Salary=4555},
      new employee{Employee_Id=8,Employee_Name="Rajesh",Employee_Address="Gaziyabad",Employee_Contact=8865,Employee_Salary=4555},
      new employee{Employee_Id=9,Employee_Name="Deepak",Employee_Address="Hapur",Employee_Contact=34242,Employee_Salary=4555},
      new employee{Employee_Id=10,Employee_Name="Naveen",Employee_Address="Gaziyabad",Employee_Contact=86756,Employee_Salary=4555},
      new employee{Employee_Id=11,Employee_Name="Rakesh",Employee_Address="Noida",Employee_Contact=8564,Employee_Salary=4555}
    };
    public IEnumerable<employee> GetAllEmployee()
    {
        return employee;
    }

在 Windows 商店应用中使用上述内容

private HttpClient httpClient;

    public TestPage()
    {
        this.InitializeComponent();
        httpClient = new HttpClient();
        httpClient.BaseAddress = new Uri("http://localhost:52333/");
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        // Limit the max buffer size for the response so we don't get overwhelmed
        httpClient.MaxResponseContentBufferSize = 266000;
    }
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        GetEmployee();
    }
    private void Rectangle_Tapped(object sender, TappedRoutedEventArgs e)
    {
      //  easingAnimation.Begin();
    }
    private async void GetEmployee()
    {
        var response = await httpClient.GetAsync("api/employee");
        if (response.IsSuccessStatusCode)
        {
            var employee = await response.Content.ReadAsStringAsync();
            List<Test> result = JsonConvert.DeserializeObject<List<Test>>(employee);

            //var emp = JsonArray.Parse(employee);
            //var qry = from m in emp
            //          select new
            //          {
            //              Emp_Id = m.GetObject()["Employee_Id"].GetNumber(),
            //              Emp_Name = m.GetObject()["Employee_Name"].GetString(),
            //              Emp_Address = m.GetObject()["Employee_Address"].GetString(),
            //              Emp_Contact = m.GetObject()["Employee_Contact"].GetNumber(),
            //              Emp_Salary = m.GetObject()["Employee_Salary"].GetNumber()
            //          };
          //  employee_details.DataContext = qry;
        }
    }
}

但所有字段都有默认值,如 null 和 0。 我应该在我的客户端从休息服务中添加相同的班级参考员工吗?

【问题讨论】:

    标签: c# json asp.net-mvc-4


    【解决方案1】:

    您的“Test”类应具有与“Employee”类相同的属性:

    Employee_Id、Employee_Name、Employee_Address、Employee_Contact、 Employee_Salary

    当您从 ReadAsStringAsync() 检索值时,您将检索字符串,因此该字符串需要包含来自您的异步调用的字符串中的 Json 数据。

    如果出现以下情况,您需要签入调试器:

    var employee = await response.Content.ReadAsStringAsync();
    

    员工有什么价值吗?

    如果是,那么您只需在 Test 中反序列化:

    List<Test> result = JsonConvert.DeserializeObject<List<Test>>(employee);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多