2017-06-29 163 views
3

我正在使用.NET Core for Linux作爲控制檯程序。 使用Http功能我得到了一些來自Web服務的信息。 然後我試圖將結果轉換爲對象,但我無法使用JSON。如何使用JSON .NET CORE

我讀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); 

我希望你能幫助我。

非常感謝,

+0

到底是什麼問題? –

+0

對不起,我錯過了。 我的問題是: 如何將我的變量結果轉換爲使用JSONConvert的對象 – eldondano

+0

您是否使用visual studio?它的哪個版本?基於.NET Core項目的project.json或csproj? –

回答

0

你只需要某種依賴的是可用於.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); 
    } 
} 
+0

感謝您的回答。但是,當我嘗試添加這個依賴關係時,我有以下錯誤消息: 無法找到類型或名稱空間名稱'Newtonsoft'(您是否缺少using指令或程序集引用?)\t NETCoreTest..NETCoreApp,Version = v1。 0 And 無法解析依賴項Newtonsoft.Json> = 10.0.3 – eldondano

+0

您是否在project.json中添加了依賴項?錯誤消息表示存在問題。如果是這樣,請在控制檯中嘗試'$ dotnet restore'。或者簡單地查看如何將.net核心包添加到.net核心。 – pijemcolu

+0

如何添加塊金包:http://ardalis.com/how-to-add-a-nuget-package-using-dotnet-add – pijemcolu