如何使用 C# 在文本框中显示 json 数组
How to display a json array in a textbox using c#
我想知道如何反序列化 json 数组并将其显示在 richTextbox 上。我正在调用 API 来获取 JSON 数组。有人可以帮我解决这个问题吗?我已将它放入列表中,但我不确定我是否已正确完成。
Form1.cs
private void btnStart_Click(object sender, EventArgs e)
{
runapi("http://localhost:8080/json_coordinates");
}
public void runapi(string api)
{
try
{
WebRequest request = WebRequest.Create(api);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string json = reader.ReadToEnd();
obj.DeserializeJsonDes(json);
// Help me fill it up to display data on the richTextBox
//richTextBox1.Text = responseFromServer;
reader.Close();
dataStream.Close();
response.Close();
}
catch (Exception ex)
{
}
}
Class JsonDes
class JsonDes
{
public List<JsonDes> name { get; set; }
public List<JsonDes> coordinates { get; set; }
public List<JsonDes> DeserializeJsonDes(string jsonArray)
{
//return JsonConvert.DeserializeObject<JsonDes>(json);
return JsonConvert.DeserializeObject<List<JsonDes>>(jsonArray);
}
}
传入的原始 JSON 具有结构:
[{'name' : 'Train 1', 'coordinates' : '38.892802, -77.061945'},
{'name' : 'Train 2', 'coordinates' : '38.941686, -77.134043'}]
最简单的方法是首先定义您的 class 以适应正在检索的数据中一条记录的形状。
在这种情况下:
public class JsonDes
{
public string name { get; set;
public string coordinates { get; set; }
}
从那里开始,您只需要使用 Newtonsoft's Json.NET 对其进行反序列化。
public static List<JsonDes> Convert(string json)
{
return JsonConvert.DeserializeObject<List<JsonDes>>(json);
}
你的class结构不是clear.However不知道我会尽量回答这个问题。
你可以做的是像 JsonConvert.DeserializeObject<dynamic>()
那样转换一个动态类型,将这个字符串反序列化为一个动态类型,然后简单地以通常的方式访问它的属性。
var results = JsonConvert.DeserializeObject<dynamic>(jsonArray);
现在您可以访问 results[0].Name
。
或者您可以 return 类型为 JArray
的对象。
dynObj = (JArray)JsonConvert.DeserializeObject(jsonArray);
然后像
一样遍历这个对象
foreach (JObject item in dynObj)
{
access now item["Your Property Name"]
}
希望对您有所帮助。
我想知道如何反序列化 json 数组并将其显示在 richTextbox 上。我正在调用 API 来获取 JSON 数组。有人可以帮我解决这个问题吗?我已将它放入列表中,但我不确定我是否已正确完成。
Form1.cs
private void btnStart_Click(object sender, EventArgs e)
{
runapi("http://localhost:8080/json_coordinates");
}
public void runapi(string api)
{
try
{
WebRequest request = WebRequest.Create(api);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string json = reader.ReadToEnd();
obj.DeserializeJsonDes(json);
// Help me fill it up to display data on the richTextBox
//richTextBox1.Text = responseFromServer;
reader.Close();
dataStream.Close();
response.Close();
}
catch (Exception ex)
{
}
}
Class JsonDes
class JsonDes
{
public List<JsonDes> name { get; set; }
public List<JsonDes> coordinates { get; set; }
public List<JsonDes> DeserializeJsonDes(string jsonArray)
{
//return JsonConvert.DeserializeObject<JsonDes>(json);
return JsonConvert.DeserializeObject<List<JsonDes>>(jsonArray);
}
}
传入的原始 JSON 具有结构:
[{'name' : 'Train 1', 'coordinates' : '38.892802, -77.061945'},
{'name' : 'Train 2', 'coordinates' : '38.941686, -77.134043'}]
最简单的方法是首先定义您的 class 以适应正在检索的数据中一条记录的形状。
在这种情况下:
public class JsonDes
{
public string name { get; set;
public string coordinates { get; set; }
}
从那里开始,您只需要使用 Newtonsoft's Json.NET 对其进行反序列化。
public static List<JsonDes> Convert(string json)
{
return JsonConvert.DeserializeObject<List<JsonDes>>(json);
}
你的class结构不是clear.However不知道我会尽量回答这个问题。
你可以做的是像 JsonConvert.DeserializeObject<dynamic>()
那样转换一个动态类型,将这个字符串反序列化为一个动态类型,然后简单地以通常的方式访问它的属性。
var results = JsonConvert.DeserializeObject<dynamic>(jsonArray);
现在您可以访问 results[0].Name
。
或者您可以 return 类型为 JArray
的对象。
dynObj = (JArray)JsonConvert.DeserializeObject(jsonArray);
然后像
一样遍历这个对象 foreach (JObject item in dynObj)
{
access now item["Your Property Name"]
}
希望对您有所帮助。