2017-03-31 4 views
0

Verwenden von C#, um JSON URL zu analysieren Ich stehe vor einigen Problemen. Wie Sie wissen, werden JSON-Daten als Name/Wert-Paare geschrieben. jetzt in URL JSON habe ich diese Daten:Parsen von JSON Name Pair in C#

{ 
    "currentVersion":10.41, 
    "serviceDescription":"There are some text here", 
    "hasVersionedData":true, 
    "supportsDisconnectedEditing":false, 
    "syncEnabled":false, 
    "supportedQueryFormats":"JSON", 
    "maxRecordCount":1000 
} 

und ich will nur aus dem Namen Teil der JSON-Daten drucken mit diesem Code

using (var wc = new WebClient()) 
{ 
    string json = wc.DownloadString("http://xxxxxxxxx?f=pjson"); 
    try 
    { 
     dynamic data = Json.Decode(json); 
     for (int i = 0; i <= data.Length - 1; i++) 
     { 
      Console.WriteLine(data[0]); 
     } 

    } 
    catch (Exception e) 
    { 

    } 
} 

aber das ist nicht, was den Druck auf der Konsole ! Kannst du mir bitte sagen, was ich falsch mache?

+1

Mögliches Duplikat [Wie ein JSON-String von URL erhalten ?] (http://stackoverflow.com/questions/5566942/how-to-get-a-json-string-from-url) – scrappedcola

+0

Welchen Fehler bekommen Sie? Sie essen die Ausnahme. Versuchen Sie, an die Konsole zu schreiben und Siehe den Fehler –

+0

Ich bekomme keinen Fehler! nur emply Konsole – Behseini

Antwort

2

Verwendung Newtonsoft JSON:

JObject jsonObject = JObject.Parse(json); 
foreach(var jsonItem in jsonObject) 
{ 
    Console.WriteLine(jsonItem.Key); 
} 
Console.ReadKey(); 
0

Erstellen Sie ein Objekt die Ergebnisse

public class RootObject 
{ 
    public double currentVersion { get; set; } 
    public string serviceDescription { get; set; } 
    public bool hasVersionedData { get; set; } 
    public bool supportsDisconnectedEditing { get; set; } 
    public bool syncEnabled { get; set; } 
    public string supportedQueryFormats { get; set; } 
    public int maxRecordCount { get; set; } 
} 

Verwenden Sie ein JavaScriptSerializer deserialisiert das Ergebnis zu halten.

var serializer = new JavaScriptSerializer(); 
var rootObject= serializer.Deserialize<RootObject>(json); 

Console.WriteLine(rootObject.currentVersion); 
Console.WriteLine(rootObject.serviceDescription); 
etc. 
0

Wenn Sie dies unter Debug ausgeführt wird, finden sich hier: Attempt by method 'System.Web.Helpers.Json..cctor()' to access method 'System.Web.Helpers.Json.CreateSerializer()' failed sobald ich das Visual Studio-Hosting-Prozess mit Ergebnissen führen aktivieren nicht markiert. Doch zu bekommen, was ich glaube, Sie wollen (eine Auflistung von jedem des Schlüssel/Wert-Paares wechselte ich zu einer foreach und es gedruckt es schön aus:

try 

    {  
     var data = Json.Decode(jsonData);  
     //for (var i = 0; i <= data.Length - 1; i++)  
     foreach (var j in data)  
     {  
      Console.WriteLine(j);  
     }  
    }  
    catch (Exception e)  
    {  
     Console.WriteLine(e);  
    }