C# 如何创建json数据列表<;T>;显示dataGridView
我正在使用C# 如何创建json数据列表<;T>;显示dataGridView,c#,json,list,object,datagridview,C#,Json,List,Object,Datagridview,我正在使用Newtonsoft库解析JSON: using Newtonsoft.Json; using Newtonsoft.Json.Linq; 我有我的json字符串和“MyClass”类 JSON字符串: { "Result": { "MyClassList": [ {"Id":1,"Amount":"5,00"},
Newtonsoft
库解析JSON:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
我有我的json字符串和“MyClass”类
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; }
}
我使用这些类“GetMyClassList”、“RootObject”和“ReturnValues”获取json数据
List GetMyClassList()
{
JObject jo=新的JObject();
List myClassList=新列表();
jo.添加(“名称”、“名称”);
添加(“姓氏”、“姓氏”);
url=“MyUrl”;
字符串responseText=ExecuteHttpRequest(url,“POST”,
“application/json”,Encoding.UTF8.GetBytes(jo.ToString()),3000;
myClassList=JsonConvert.DeserializeObject(responseText)
.GetMyClassListResult.MyClassList;
返回myClassList;
}
公共阶级价值观
{
公共int错误代码{get;set;}
公共字符串ErrorDescription{get;set;}
}
公共类GetMyClassListResult
{
[JsonProperty(“MyClassList”)]
公共列表MyClassList{get;set;}
public ReturnValues ReturnValues{get;set;}
}
公共类根对象
{
公共GetMyClassListResult GetMyClassListResult{get;set;}
}
我无法获取此数据数组(Id和金额)。
我想获取这些数据并在dataGridView中显示。t-shot的最佳方法是在行中设置断点,在那里你可以从方法->中获得结果,它是否已填充?这一行:
return myClassList;
我已经用单次调整运行了您的代码->我刚刚使用了下面的直接JSON(不是来自web)-代码。这次运行没有问题,我可以看到从JSON解析出来的所有结果
您必须找出问题是在JSON中,还是将数据设置为DataGridTable(您根本没有包含这些代码)
类程序
{
静态void Main(字符串[]参数)
{
var result=new Program().GetMyClassList();
foreach(结果中的var项目)
WriteLine($“ID:{item.ID}\tAmount:{item.Amount}”);
Console.ReadKey();
}
公共列表GetMyClassList()
{
List myClassList=新列表();
字符串响应文本=“{\'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(responseText)
.GetMyClassListResult.MyClassList;
返回myClassList;
}
}
公共类MyClass
{
[JsonProperty(“Id”)]
公共Int64 Id{get;set;}
[JsonProperty(“金额”)]
公共字符串金额{get;set;}
}
公共阶级价值观
{
公共int错误代码{get;set;}
公共字符串ErrorDescription{get;set;}
}
公共类GetMyClassListResult
{
[JsonProperty(“MyClassList”)]
公共列表MyClassList{get;set;}
public ReturnValues ReturnValues{get;set;}
}
公共类根对象
{
公共GetMyClassListResult GetMyClassListResult{get;set;}
}
我刚刚将JSON粘贴到在线编译器中,数组后面缺少逗号“,”->这是web上的错误还是从web api返回的错误?JSON数据是常规数据。我可以在dataGridView中显示“MyClassList”和“ReturnValues”,但我想在dataGridView中看到“Id”:1和“Amount”:“5,00”。另外,[JsonProperty(“Amount”)]
在AmountCorrect之后有空格,我在这里写的。MyClassList=JsonConvert.DeserializeObject(responseText)。GetMyClassListResult.MyClassList;这行有错误。错误:其他信息:对象引用未设置为对象的实例。
return myClassList;
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; }
}