如何使用c#在文本框中显示json数组

本文关键字:显示 json 数组 文本 何使用 | 更新日期: 2023-09-27 18:19:24

我想知道如何反序列化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)
        {
        }
}

类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'}]

如何使用c#在文本框中显示json数组

您的类结构不清楚。然而,在不知道的情况下,我将试着回答这个问题。

你能做的是强制转换一个动态类型,如JsonConvert.DeserializeObject<dynamic>(),将这个字符串反序列化为一个动态类型,然后简单地以通常的方式访问它的属性。

var results = JsonConvert.DeserializeObject<dynamic>(jsonArray);

现在你可以访问results[0].Name了。

也可以返回类型为JArray的对象

dynObj = (JArray)JsonConvert.DeserializeObject(jsonArray);

然后像

一样遍历这个对象
 foreach (JObject item in dynObj)
 {
      access now item["Your Property Name"]
 }

最简单的方法是首先定义您的类,使其适合正在检索的数据中的一条记录的形状。

在本例中:

public class JsonDes
{
   public string name { get; set;
   public string coordinates { get; set; }
}
从那里,你只需要使用Newtonsoft的Json。. NET对它进行反序列化。
public static List<JsonDes> Convert(string json)
{
   return JsonConvert.DeserializeObject<List<JsonDes>>(json);
}