C# 中 JSON 格式字符串(来自 REST API)的值

Posted

技术标签:

【中文标题】C# 中 JSON 格式字符串(来自 REST API)的值【英文标题】:Values from JSON formatted string (from REST API) in C# 【发布时间】:2016-01-03 13:09:56 【问题描述】:

最近我得到一个约会,我需要使用它的 REST API 从云下载一些数据,并将该“字符串”中的值存储在一个对象或一些变量中。下载完成,我现在需要做的就是以某种方式解析数据。

直到现在我制作了这种代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("some link");

request.ContentType = "application/json; charset=utf-8";
request.Method = "GET";
request.Headers.Add("Carriots.apiKey", "key");
using (WebResponse response = request.GetResponse())

    using(Stream stream = response.GetResponseStream())
    
        StreamReader reader = new StreamReader(stream);
        JObject json = JObject.Parse(reader.ReadToEnd());
        Console.WriteLine(json.ToString());
    

这是输出:


    "total_documents": 3,
    "result": [
    
        "_id": "...",
        "protocol": "v1",
        "checksum": "",
        "_t": "str",
        "at": 1444134377,
        "device": "-just a device-",
        "data": 
            "field1": "123",
            "field2": "1536"
        ,
        "id_developer": "....",
        "created_at": 1444134377,
        "owner": "-someUser-"
    
    ]

我知道互联网上有很多解决方案,但没有一个能满足我的需要。好的,我找到了一些东西,但它会在每一行上迭代并以这种方式检查值,但在我的情况下,我可以有数千个这样的输出。

有没有办法使用某种内置函数来完成所有这些(我的意思是解析),或者唯一的解决方案是迭代或编写一些正则表达式?

【问题讨论】:

你是用 c# 还是 js 读那个 JSON? 反序列化就是你要找的东西! 试用 Linq to Json newtonsoft.com/json/help/html/LINQtoJSON.htm 可能相关:JObject.Parse vs JsonConvert.DeserializeObject(JObject.Parse 是 Newtonsoft Json.Net) 可能重复。看看this post 【参考方案1】:

假设 json 将始终遵循这种格式,请定义您的模型

public class jsonData
    public int total_documents get;set;
    public resultData result get;set;


public class resultData
    public int _id get;set;
    public string protocol get;set;
    ....

然后使用反序列化

Json.Deserialize<jsonData>(yourstring)

【讨论】:

谢谢你,有了这个我想我可以管理一些事情。我所需要的只是一些运行时反序列化:link

以上是关于C# 中 JSON 格式字符串(来自 REST API)的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在C#中解析/反序列化从rest服务返回的JSON

在gridview上用c#显示来自rest api服务器的请求

用C#语言将json格式数据转成json对象

c# 反序列化 Json 字符串

C# Parse Json 二维数组,没有来自 geobytes.com 的格式

如何为 WCF REST API 生成提到的 json 格式