2015-04-14 4 views
9

Ich habe ein .NET-Projekt. Ich benutze die JSON.NET-Bibliothek. Ich muss diese Bibliothek verwenden, um JSON zu analysieren. Mein JSON sieht so aus:Parsen von JSON-Schlüssel/Wert-Paaren mit JSON.NET

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

Das Objekt ist wirklich nur eine Liste der Schlüssel/Wert-Paare. Ich versuche herauszufinden, wie man JSON.NET verwendet, um 1) diese JSON zu analysieren und 2) durch die Schlüssel/Wert-Paare zu führen. Gibt es eine Möglichkeit, dies zu tun? Wenn das so ist, wie?

Das einzige, was ich sehe, ist das Deinserialisieren in ein stark typisiertes Objekt.

Vielen Dank!

+0

Haben teilen sollte diesen JSON generieren? Wird es immer 1 und 2 als Schlüsselname geben? – mason

+0

Nun, was hast du bisher in Bezug auf JSON.NET versucht? Es sieht so aus, als ob Sie in der Lage sein sollten, dies als 'JObject' zu analysieren oder es in ein' Dictionary 'ganz einfach zu konvertieren ... –

+0

mögliches Duplikat von [Wie kann ich JSON zu einem einfachen Dictionary in ASP.NET?](http://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to-a-simple-dictionarystring-instr-in-asp-net) –

Antwort

29

können Sie deserialisieren zu Dictionary<string, string>

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

Seit JObject IDictionary implementiert, können Sie auch einfach JObject.Parse

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

Im Folgenden verwenden die json Wo subratings Schlüsselwertpaar haben

{ 
"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; } 
} 

Sie können Newtonsoft verwenden. Json deserialisieren dieses Objekt

+1

Könnten Sie vielleicht erklären, wie Sie das Schlüssel/Wert-Paar mit diesem Beispiel auflisten? Ich habe ein ähnliches Setup. Es ist nicht klar, wie man auf das Schlüssel/Wert-Paar mit Whats hier zugreifen kann. – Autonomic

1

Hallo alle fühlte ich mich auch dieses

Die obige Antwort, die Sie für mich arbeitet mit Textfeld in 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 

} 

dank EZI