簡體   English   中英

如何使用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)
        {

        }
}

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

最簡單的方法是首先定義您的類,使其適合要檢索的數據中一條記錄的形狀。

在這種情況下:

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);
}

您的課程結構不清楚。但是,不知道我將嘗試回答這個問題。

您可以做的是將動態類型JsonConvert.DeserializeObject<dynamic>()以將該字符串反序列化為動態類型,然后以通常的方式簡單地訪問其屬性。

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

現在,您可以訪問results[0].Name

或者,您可以返回JArray類型的JArray

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

然后像這樣遍歷這個對象

 foreach (JObject item in dynObj)
 {
      access now item["Your Property Name"]
 }

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM