【问题标题】:How to display a json array in a textbox using c#如何使用 c# 在文本框中显示 json 数组
【发布时间】:2015-10-27 16:28:21
【问题描述】:

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

【问题讨论】:

  • 输出是什么,输出应该是什么?标题也与问题正文不匹配
  • 你收到的 JSON 是什么。你的类定义没有显示太多
  • 我的 Json 数组看起来像这样 [{'name' : 'Train 1', 'coordinates' : '38.892802, -77.061945'},{'name' : 'Train 2', 'coordinates' : '38.941686, -77.134043'}] 我想在richTextBox中显示名称和坐标
  • @AshanWijenayake 我们想看JsonDes 结构
  • @Navonel 如果我有一个像我在评论中发布的那样的 json 数组,我如何使用 JsonConvert 在 TextBox 或 RichTextBox 中显示数据?

标签: c# arrays json list deserialization


【解决方案1】:

你的班级结构不清楚。但是不知道我会尝试回答这个问题。

您可以做的是将JsonConvert.DeserializeObject&lt;dynamic&gt;() 之类的动态类型转换为将该字符串反序列化为动态类型,然后以通常的方式访问其属性。

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

希望对你有所帮助。

【讨论】:

  • 这对我有用。非常感谢你。 修复它
  • 如何在文本框或列表框中显示输出?我收到错误。
  • 我明白了。谢谢,投射有问题。
【解决方案2】:

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

在这种情况下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多