如何使用 JSONConvert 将变量 Result 转换为对象?

Posted

技术标签:

【中文标题】如何使用 JSONConvert 将变量 Result 转换为对象?【英文标题】:How can I convert my variable Result to an object using JSONConvert? 【发布时间】:2017-12-02 20:44:24 【问题描述】:

我将 .NET Core for Linux 用于控制台程序。 使用 Http 功能,我得到了一些来自 Web 服务的信息。 然后我尝试将结果转换为一个对象,但我无法使用 JSON。

我阅读了this article,但没有找到任何示例,也无法访问 javascriptSerializer

    public async void CallApi(Object stateInfo)
    
        var client = new HttpClient();
        var requestContent = new FormUrlEncodedContent(new[]  new KeyValuePair<string, string>("pair", "XETHZEUR"), );
        HttpResponseMessage response = await client.PostAsync("https://api.kraken.com/0/public/Trades", requestContent);
        HttpContent responseContent = response.Content;
        using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync()))
        
            String result = await reader.ReadToEndAsync();
            //Here I would like to do a deserialized of my variable result using JSON (JObject obj = (JObject)JsonConvert.DeserializeObject(result);) But I don't find any JSON object
        
    

编辑 我想知道如何使用 JSON 将变量结果转换为对象,就像我通常使用 c# 所做的那样:

        JObject obj = (JObject)JsonConvert.DeserializeObject(result);

希望你能帮助我。

非常感谢,

【问题讨论】:

问题到底是什么? 对不起,我错过了。我的问题是:如何使用 JSONConvert 将变量 Result 转换为对象 您在使用 Visual Studio 吗?它的哪个版本?基于 project.json 或 csproj 的 .NET Core 项目? 【参考方案1】:

您只需要某种可用于 .NET 核心的依赖项,它可以帮助您反序列化 json。

Newtonsoft.Json 是事实上的标准并且在 .NET 核心中可用,为了使用它,你必须将它添加到你的 project.json 文件中

"dependencies" 
...
"Newtonsoft.Json": "10.0.3"
,

类中适当的 using 语句

using Newtonsoft.Json

然后您可以使用 JsonConvert.DeserializeObject(json); 反序列化

    public async void CallApi(Object stateInfo)

    var client = new HttpClient();
    var requestContent = new FormUrlEncodedContent(new[]  new KeyValuePair<string, string>("pair", "XETHZEUR"), );
    HttpResponseMessage response = await client.PostAsync("https://api.kraken.com/0/public/Trades", requestContent);
    HttpContent responseContent = response.Content;
    using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync()))
    
        String result = await reader.ReadToEndAsync();
        //Here I would like to do a JSON Convert of my variable result
        var yourObject = JsonConvert.DeserializeObject(result);
    

【讨论】:

感谢您的回答。但是,当我尝试添加此依赖项时,出现以下错误消息:找不到类型或命名空间名称“Newtonsoft”(您是否缺少 using 指令或程序集引用?) NETCoreTest..NETCoreApp,Version=v1.0 和无法解析依赖 Newtonsoft.Json >= 10.0.3 你在project.json中添加依赖了吗?错误消息说它有问题。如果是这样,请在控制台中尝试 $ dotnet restore。或者只是查看如何将 nugget 包添加到 .net 核心。 如何添加块包:ardalis.com/how-to-add-a-nuget-package-using-dotnet-add

以上是关于如何使用 JSONConvert 将变量 Result 转换为对象?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JsonConvert 将 JSON 反序列化为 VB.NET 中的数据表

使用非美国日期格式时,JsonConvert.DeserializeObject 无法将字符串转换为 DateTime

使用 JsonConvert.DeserializeObject 将 Json 反序列化为 C# POCO 类

Jsonconvert - 如何定义结构

JSON.Net 在使用 [JsonConvert()] 时抛出 ***Exception

当我调用 JsonConvert.DeserializeObject() 时,为啥将 JArray 分配给 var 失败?