如何做json数据列表<t> show dataGridView

时间:2017-01-29 14:22:57

标签: c# json list object datagridview

我使用Newtonsoft库来解析JSON:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

我有我的json字符串和#34; MyClass&#34;类。

JSON字符串:

{
    "Result":    
            {    
              "MyClassList": [    
                                 {"Id":1,"Amount":"5,00"},    
                                 {"Id":2,"Amount":"10,00"},                                 
                                 {"Id":3,"Amount":"20,00"},    
                                 {"Id":4,"Amount":"25,00"}      
                             ]     
              "ReturnValues":           
                             {
                              "ErrorCode":1,
                              "ErrorDescription":"Successful"
                             }
            } 
}

我的班级:

public class MyClass
{
    [JsonProperty("Id")]
    Int64 Id { get; set; }

    [JsonProperty("Amount ")]
    string Amount { get; set; }
}

我正在使用这些类获取json数据&#34; GetMyClassList&#34;,&#34; RootObject&#34;和&#34; ReturnValues&#34;。

List<MyClass> GetMyClassList()
{
    JObject jo = new JObject();
    List<MyClass> myClassList = new List<MyClass>();
    jo.Add("Name", "Name");
    jo.Add("Surname", "Surname");
    url = "MyUrl";

    string responseText = ExecuteHttpRequest(url , "POST",
             "application/json", Encoding.UTF8.GetBytes(jo.ToString()), 3000);

    myClassList = JsonConvert.DeserializeObject<RootObject>(responseText)
                   .GetMyClassListResult.MyClassList;

    return myClassList;
}


public class ReturnValues
{
    public int ErrorCode { get; set; }
    public string ErrorDescription { get; set; }
}

public class GetMyClassListResult
{
    [JsonProperty("MyClassList")]
    public List<MyClass> MyClassList { get; set; }
    public ReturnValues ReturnValues { get; set; }
}

public class RootObject
{
    public GetMyClassListResult GetMyClassListResult { get; set; }
}

我无法获取此数据数组(Id和数量)。 我想获取这些数据并在dataGridView中显示它。

1 个答案:

答案 0 :(得分:0)

t-shoot的最佳方法是在线上设置断点,你从方法得到结果 - &gt;它被填满了吗?这一行:

return myClassList;

我已通过单一调整运行您的代码 - &gt;我刚刚使用了直接JSON(不是来自网络) - 下面的代码。这样运行没有问题,我可以看到所有结果都是从JSON中解析出来的。

你必须找到问题是在JSON中解析,还是将数据设置为DataGridTable(根本没有包含哪些代码)。

class Program
{
    static void Main(string[] args)
    {

        var result = new Program().GetMyClassList();

        foreach (var item in result)
            Console.WriteLine($"ID: {item.Id}\tAmount:{item.Amount}");

        Console.ReadKey();
    }

    public List<MyClass> GetMyClassList()
    {
        List<MyClass> myClassList = new List<MyClass>();

        string responseText = "{\"GetMyClassListResult\":{\"MyClassList\":[{\"Id\":1,\"Amount\":\"5,00\"},{\"Id\":2,\"Amount\":\"10,00\"},{\"Id\":3,\"Amount\":\"20,00\"},{\"Id\":4,\"Amount\":\"25,00\"}],\"ReturnValues\":{\"ErrorCode\":1,\"ErrorDescription\":\"Successful\"}}}";

        myClassList = JsonConvert.DeserializeObject<RootObject>(responseText)
                       .GetMyClassListResult.MyClassList;

        return myClassList;
    }
}

public class MyClass
{
    [JsonProperty("Id")]
    public Int64 Id { get; set; }

    [JsonProperty("Amount")]
    public string Amount { get; set; }
}

public class ReturnValues
{
    public int ErrorCode { get; set; }
    public string ErrorDescription { get; set; }
}

public class GetMyClassListResult
{
    [JsonProperty("MyClassList")]
    public List<MyClass> MyClassList { get; set; }
    public ReturnValues ReturnValues { get; set; }
}

public class RootObject
{
    public GetMyClassListResult GetMyClassListResult { get; set; }
}