2015-04-14 16 views
9

Tôi có một dự án .NET. Tôi đang sử dụng thư viện JSON.NET. Tôi cần sử dụng thư viện này để phân tích cú pháp một số JSON. JSON của tôi trông giống như sau:Phân tích cặp khóa/giá trị JSON bằng JSON.NET

{"1":"Name 1","2":"Name 2"} 

Đối tượng thực sự chỉ là danh sách các cặp khóa/giá trị. Tôi đang cố gắng tìm ra cách sử dụng JSON.NET đến 1) phân tích cú pháp vòng lặp JSON và 2) này thông qua các cặp khóa/giá trị. Có cách nào để làm việc này không? Nếu vậy, làm thế nào?

Điều duy nhất tôi thấy là loại bỏ hàng loạt thành đối tượng được nhập mạnh mẽ.

Cảm ơn bạn rất nhiều!

+0

Bạn tạo JSON này? Nó sẽ luôn luôn là 1 và 2 là tên khóa? – mason

+0

Bạn đã thử những gì về JSON.NET? Dường như bạn có thể phân tích cú pháp này thành 'JObject', hoặc chuyển đổi nó thành một chuỗi« Dictionary 'rất dễ dàng ... –

+0

có thể trùng lặp của [Làm thế nào tôi có thể deserialize JSON thành một từ điển đơn giản trong ASP.NET?](http://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to-a-simple-dictionarystring-string-in-asp-net) –

Trả lời

29

Bạn có thể deserialize để Dictionary<string, string>

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json); 
foreach(var kv in dict) 
{ 
    Console.WriteLine(kv.Key + ":" + kv.Value); 
} 

Kể từ JObject thực hiện IDictionary, bạn cũng có thể chỉ cần sử dụng JObject.Parse

var dict = JObject.Parse(@"{""1"":""Name 1"",""2"":""Name 2""}"); 
0

Dưới đây là json đâu subratings có cặp giá trị key

{ 
"data": [  
{  
"id": "288560300",  
"lang": "en", 

"subratings":  {  

"Cleanliness": "5", 

"Sleep Quality": "5", 

"Service": "5" 
    } 
} 
]} 

public void LoadJsonKeyValuePair(string json) 
{ 
Rootobject item = JsonConvert.DeserializeObject<Rootobject>(json); 
} 

public class Rootobject 
{ 
[JsonProperty("data")] 
public List<Datum> data { get; set; } 
} 

public class Datum 
{ 
[JsonProperty("id")] 
public string id { get; set; } 
[JsonProperty("lang")] 
public string lang { get; set; } 
[JsonProperty("subratings")] 
public Dictionary<string, object> subratings { get; set; } 
} 

Bạn có thể sử dụng Newtonsoft. Json để deserialize đối tượng này

+1

Bạn có thể giải thích cách liệt kê cặp khóa/giá trị với ví dụ này không? Tôi có một thiết lập tương tự. Nó không rõ ràng làm thế nào để truy cập vào cặp khóa/giá trị với whats ở đây. – Autonomic

1

Hi tất cả cảm thấy mình cũng nên chia sẻ này

Câu trả lời ở trên làm việc cho tôi cách sử dụng hộp văn bản trong asp.ne t

var jsonData = JsonConvert.DeserializeObject<Dictionary<string, string>> 
(json_Incoming_fromServer); 
foreach(var keyvalue in jsonData) 
{ 

    textBox.text = keyvalue.Value; // this will only display the value of that 
    // attribute/key 

} 

nhờ EZI

Các vấn đề liên quan