2017-12-28 2 views
0

Ich versuche aC# String aufgeteilt werden, die in ihm mehrere json SaitenSplit-String mit mehreren json Saiten

Beispiel:

{"id":0,"username":"test"}{"id":8,"username":"testuser"} 

Wie kann ich Schleife durch jeden JSON-String in seinem eigenen ‚foreach 'loop

+2

Sie sollten es nur deserialisieren. –

+1

können Sie ersetzen} {mit} | {und split | und setzen Sie foreach –

+0

Das ist nicht gültig JSON. Sehen Ihre Daten wirklich so aus? –

Antwort

0

hallo Sie einige trikk auf ungültige json tun können ...

string myinvalidJson = "{\"id\":0,\"username\":\"test\"}{\"id\":8,\"username\":\"testuser\"}"; 

foreach(var item in myinvalidJson.Replace("}{", "}|{").Split('|')) { 
... 
} 

oder erstellen gültig json und deserialisieren mit newtonsoft

string myinvalidJson = "{\"id\":0,\"username\":\"test\"}{\"id\":8,\"username\":\"testuser\"}"; 

var validJson = "[" + myinvalidJson.Replace("}{", "},{") + "]"; 
+0

Wie ist es ungültig? Ich habe es in php online geparst, die auf die Website nur die Zeichenfolge druckt, wie ich gezeigt habe, dann verwende ich "string json = * öffnet Link und schnappt sich Website-Daten * –

+0

@Jacob, wenn Sie Array von Objekt haben Sie es in Klammer [] und auch zwischen allen Objekten muss camma sein wie [{"a": 10}, {"a": 20}] ... du kannst deine json string mit dieser Seite testen: https://jsonformatter.curiousconcept.com/ –

0

Sie es in ein Array von Strukturtyp Newtonsoft.Json mit Deserialize kann dies Sie tun müssen, um eine Zeichenfolge haben eine Reihe von JSONs wie unten passend:

"[{\"id\":0,\"username\":\"test\"},{\"id\":8,\"username\":\"testuser\"}]" 

nächste

public class User 
{ 
    public int Id { get; set; } 
    public string Username{ get; set; } 
} 

schließlich Deserialize tun: lets 'User' wie unten genannt strucure Typ haben

string str = "[{\"id\":0,\"username\":\"test\"},{\"id\":8,\"username\":\"testuser\"}]"; 
User[] res = Newtonsoft.Json.JsonConvert.DeserializeObject<User[]>(str); 

Jetzt können Sie 'foreach' Schleife auf res Array zu tun.