2014-07-27 63 views
-1

從API我收到一個JSON對象,看起來像這樣:分配JSON值屬性在C#

{ 
    "wind" : { 
    "speed" : 7.31, 
    "deg" : 187.002 
    }, 
    "rain" : { 
    "3h" : 0 
    }, 
    "clouds" : { 
    "all" : 92 
    }, 
    "coord" : { 
    "lon" : 139, 
    "lat" : 35 
    }, 
    "dt" : 1369824698, 
    "id" : 1851632, 
    "cod" : 200, 
    "weather" : [ 
    { 
     "id" : 804, 
     "main" : "clouds", 
     "icon" : "04n", 
     "description" : "overcast clouds" 
    } 
    ], 
    "main" : { 
    "humidity" : 89, 
    "temp_max" : 292.04, 
    "temp_min" : 287.04, 
    "temp" : 289.5, 
    "pressure" : 1013 
    }, 
    "sys" : { 
    "country" : "JP", 
    "sunrise" : 1369769524, 
    "sunset" : 1369821049 
    }, 
    "name" : "Shuzenji" 
} 

我想分配兩個這些值的上我的課:

public class Weather { 
    public string Name { get; set; } 
    public string Temp { get; set; } 
} 

我可以分配這樣的名稱:

weather.Name = TheJSON.name.ToString(); 

但溫度是棘手的,因爲它是嵌套在「主」 - 陣列。我見過很多關於如何在Javascript中執行此操作的示例,但在C#中沒有這麼多。謝謝!

+0

您是否已將json字符串轉換爲json對象? –

+0

答案似乎很簡單,我不確定我是否缺少某些東西。你只需要'TheJSON.main.temp',對吧? – CodingGorilla

+1

主不是數組。它是一個對象,所以TheJSON.main.temp.ToString()。 –

回答

1

主不是數組。它是一個對象,所以

TheJSON.main.temp.ToString() 
1

使用JSON數據的最簡單方法是將它們反序列化爲C#對象並直接在您的應用程序中使用它們。您可以使用像JSON C# Class Generator這樣的工具從JSON數據自動生成C#類。一旦生成了C#類,就可以使用JsonConvert.DeserializeObject(jsonText)反序列化JSON字符串;生成的代碼需要Newtonsoft Json.NET,您可以輕鬆地將其添加爲NuGet package

如果您將JSON內容保存在D:\ test.json中,則可以使用以下代碼使用生成的C#對象訪問這些值。下面的例子只是給你一個用法的想法。

var json = File.ReadAllText(@"D:\test.json"); 
var weather = JsonConvert.DeserializeObject<Weather>(json); 
Console.WriteLine(weather.Name); 
Console.WriteLine(weather.Sys.Country);