1

我在我的服务器上创建了一个 json 文件,我使用它通过 JSON.NET 反序列化将数据发送到 ac# 程序。但是我得到一个空对象异常,任何人都可以告诉我如何创建类。谢谢 我的课在这里

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Load();
    }
    public void Load()
    {
        label1.Text = "State:\nLoading...";
        try
        {
            Products pd = new Products();
            using (var webClient = new System.Net.WebClient())
            {
                // download json from url
                var json = webClient.DownloadString(url);
                // Now parse with JSON.Net
                Products convert = JsonConvert.DeserializeObject<Products>(json) as Products;
                label1.Text += pd.info.ToString();
                label1.Text += "\nWeb Service Connected To";
            }
        }
        catch (JsonSerializationException jsonerr) { label1.Text += "\nWeb Service Connection Failed"; MessageBox.Show(jsonerr.ToString()); }
        catch (Exception err) { throw; }
        finally { label1.Text += "\nWeb Service Closed"; }
    }
}

}

public class Products
{
    public Info info;

    [JsonProperty("post")]
    public Info infos
    {
        get { return info; }
        set { info = value; }
    }
}

public class Info
{
    private string pd_name;
    private int pd_id;

    [JsonProperty("pd_id")]
    public int pd_ids
    {
        get { return pd_id; }
        set { pd_id = value; }
    }

    [JsonProperty("pd_name")]
    public string pd_names
    {
        get { return pd_name; }
        set { pd_name = value; }
    }
}
4

1 回答 1

1

您没有处理postsJSON 中的值。因此,如果您的 JSON 格式如下:

{ "posts" : [ { "post" : { "pd_id" : "399", 
                           "pd_name" : "1.2mm  Cylinder Labret"} },
              { "post" : { "pd_id" : "415", 
                           "pd_name" : "1.2mm  Laser Etched Labret" }}
            ] }

尝试像这样设置您的课程:

public class Posts
{
    public List<Products> posts { get; set; }
}

public class Products
{
    public List<Info> post { get; set; }
}

public class Info
{
    public string pd_id { get; set; }
    public string pd_name {get; set; }
}
于 2013-05-18T14:17:46.863 回答