2016-12-27 17 views
0

ValueJSONKeyを返します。JSON文字列から値を取得しています

私は以下を試しましたが、どれもうまくいきませんでした。

1)

string email= json.emailAddress; 

2)

string email= json["emailAddress"].ToString(); 

完全なコード

var api= new Uri("https://api.linkedin.com/v1/people/~:(picture-url)?format=json"); 
using (var webClient = new WebClient()) 
{ 
     webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token); 

     webClient.Headers.Add("x-li-format", "json"); 

     dynamic json = webClient.DownloadString(api); 
    } 

JSONは

{ 
    "emailAddress": "[email protected]", 
    "firstName": "xxx", 
    "formattedName": "xxxx xxxx", 
    "id": "xxxxxx", 
    "lastName": "xxxxxx", 

} 
を返さ
+0

'dynamic'を使用して良いですが、あなたはメソッドの戻り値の型を知っているときは、その型の変数を宣言する必要があり、すなわち'文字列のjson = webClient.DownloadString(API)がございます。 ' 。 'dynamic'を使うと変数の魔法の特性が得られません。もしそれが' string'ならば 'dynamic'の' string'です。 – Enigmativity

答えて

4

はあなたのアプローチを使用して、あなたの質問に答えるために、(JSON.Netを使用せずに)最も簡単な方法は、JavaScriptSerializer

// have this at the top with your using statements 
using System.Web.Script.Serialization; 

を使用して、あなたのコード内で、以下に示すようにJavaScriptSerializerを使用することです。

var api= new Uri("https://api.linkedin.com/v1/people/~:(picture-url)?format=json"); 
using (var webClient = new WebClient()) 
{ 
    webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);  
    webClient.Headers.Add("x-li-format", "json"); 
    string json = webClient.DownloadString(api); 

    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    dynamic data = serializer.Deserialize<object[]>(json); 
    string emailAddress = data.emailAddress; 
    } 

良い方法はhttp://json2csharp.com/のようなものを使用して、JSON.Netライブラリを使用してデシリアライズあなたのリターンJSONデータのための強力な型指定されたPOCOSを作成することです。

+1

ここに示されたすべての回答は完全に機能します。あなたは@モートの答えが最善の方法だとお考えですか? – Illep

1
result={ 
     "emailAddress": "[email protected]", 
     "firstName": "xxx", 
     "formattedName": "xxxx xxxx", 
     "id": "xxxxxx", 
     "lastName": "xxxxxx" 
     } 
var ser = new JavaScriptSerializer(); 
var people = ser.Deserialize<object[]>(result); 
foreach(var obj in people) 
{ 
    Email = obj.emailAddress; 
    ... 
} 
+0

お返事ありがとうございます。あなたのソリューションも同様に機能します。 – Illep

3

Newtonsoft JSON文字列から値を取得するためにJson.Netをインストールできます。

public class Rootobject 
{ 
    public string emailAddress { get; set; } 
    public string firstName { get; set; } 
    public string formattedName { get; set; } 
    public string id { get; set; } 
    public string lastName { get; set; } 
} 

のようなクラスを作成して、シンプルな1行コードでデシリアライズするだけです。

var ser = JsonConvert.DeserializeObject<Rootobject>(YourJsonString); 
Console.WriteLine(ser.emailAddress); 
+0

ご返信ありがとうございます。あなたのソリューションも同様に機能します。 – Illep

関連する問題