如何使用 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"]
 }

希望对您有所帮助。