【问题标题】:String to JSON to 2D Array C#字符串到 JSON 到 2D 数组 C#
【发布时间】:2018-09-27 23:05:46
【问题描述】:

我收到来自 httpWebRequest 的响应作为字符串,它是 JSON 格式。我想要的是将此字符串更改为 json,然后有两个选项
1) 将 json 更改为二维数组
2) 将 json 更改为字典
关键是我想轻松访问变量。

这是我收到的字符串:

"[{\"Year\":2000,\"Name\":\"Ala\",\"Val\":0.5},{\"Year\":2001,\"Name\":\"Ola\",\"Val\":0.6}... {\"Year\":2004,\"Name\":\"Ela\",\"Val\":0.8}]"

如您所见,我可以有一个包含 n 行和 3 列(Year、Name、Val)的表。

这是我用来接收响应的代码

            var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:5000/");

        httpWebRequest.ContentType = "application/json";

        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            //send request data in json format 
            streamWriter.Write(jsonData);
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            //take data as string
            var result = streamReader.ReadToEnd();
        }
        return null;
    }

我将返回这个数组/字典,而不是 null。 哪种方式更好?有人知道怎么做吗?我感觉迷失在 C# 中。 提前感谢您的帮助!

【问题讨论】:

    标签: c# arrays json dictionary httpwebresponse


    【解决方案1】:

    首先,为了更轻松地使用 JSON,您可以安装 Newtonsoft.Json

    Install-Package Newtonsoft.Json -Version 11.0.2
    

    然后添加using Newtonsoft.Json;

    看看这个例子

    public class Item
    {
        public int Year { get; set; }
        public string Name { get; set; }
        public double Val { get; set; }
    }
    
    public class Program
    {
        public static void Main()
        {
            string json = "[{\"Year\":2000,\"Name\":\"Ala\",\"Val\":0.5},{\"Year\":2001,\"Name\":\"Ola\",\"Val\":0.6},{\"Year\":2004,\"Name\":\"Ela\",\"Val\":0.8}]";
            List<Item> items = JsonConvert.DeserializeObject<List<Item>>(json);
    
            foreach(var item in items)
            {
                Console.WriteLine("Year: {0}; Name: {1}; Val: {2}", item.Year, item.Name, item.Val);
            }
        }
    }
    

    在这里,我创建了一个新类Item,女巫将代表 JSON 数组中的一个对象。然后使用 Newtonsoft.Json 将 json 字符串反序列化为项目列表。

    【讨论】:

    • 谢谢,您的回答对我有帮助,而且我遇到了像stackoverflow.com/questions/47077915/… 这样的问题,所以结合这两种解决方案我得到了我想要的:)
    • 太棒了。很高兴能帮上忙
    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多