将字符串反序列化为类



我在服务器上创建了一个json文件,我使用它通过json向c#程序发送数据。净反序列化。然而,我得到一个空对象异常,谁能告诉我如何创建类。谢谢我的班级在这里

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; }
    }
}

您没有处理JSON中的posts值。如果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; }
}

相关内容

  • 没有找到相关文章