2016-06-02 6 views
0

Ich habe schon einige Beispiele auf SO gesehen. Ich folgte ihren Beispielen, aber ich bin mir nicht sicher, warum meine nicht funktioniert. HierNewton JSON Json zu Liste konvertieren

ist der Code:

private void convertData() 
{ 
    //Business logic... 

    List<FeedRow> feed = JsonConvert.DeserializeObject <List<FeedRow>> (content); 
} 

public class FeedRow 
{ 
    public string eventPK { get; set;} 
    public string picturePK { get; set;} 
} 

Debug zeigt mir, dass der JSON (variable Gehalt) wie folgt aussieht:

[ "{\" eventPK \ ": \" 321-0321 \ ", \" BildPK \ ": \" 019-5903 \ "}", "{\" eventPK \ ": \" 203-1234 \ ", \" BildPK \ ": \" 013-2034 \ "}" ]

Ich habe einen Versuch/Catch hinzugefügt und die folgende Nachricht wurde gegeben:

Fehler beim Konvertieren des Wertes "{" eventPK ":" 321-0321 "," picturePK ":" 019-5903 "}" um 'learning.FeedRow' einzugeben. Pfad '[0]', Zeile 1, Position 112.

+2

Es sieht so aus, als ob Inhalt doppelt codiert ist. Das Endergebnis ist, dass JSON.NET es als ein Array von Strings und nicht als ein Array von 'FeedRow' ansieht. Wie generierst du dein JSON? – mason

+0

@mason Ich bin mit einer Web-API verbunden. In der Methode der Web-API lautet der Rückgabetyp string [] Wenn ich es erhalte, mache ich: var content = erwarten response.Content.ReadAsStringAsync(); – kot09

+1

Ist die Web-API unter Ihrer Kontrolle? Scheint so, als sollte das sein, was es erzeugt: '[{" eventPK ":" 321-0321 "," picturePK ":" 019-5903 "}, {" eventPK ":" 203-1234 "," picturePK ":" 013 -2034 "}]' – mason

Antwort

0

Es ist wie content aussieht wird als ein Array von Zeichenketten analysiert, siehe doppelte Anführungszeichen unmittelbar nach [und vor].

EDIT nach [] Rückgabetyp OP Kommentar über Zeichenfolge Lesen:

NewtonJSON wird/kann nicht automatisch einen String [] zu einem FeedRow Objekt mit zwei Attributen konvertieren.

Zwei Optionen, die ich versuchen würde, sind:
1. Ändern der Web-API JSON-Objekt [] statt string []
2. Schleife durch die Saiten content zurückzukehren (wenn es ist in der Tat eine Zeichenfolge []) und verwenden Sie NewtonJSON, um jede Zeichenfolge in ein FeedRow-Objekt zu konvertieren und zu einer Liste hinzuzufügen.

+0

Es gibt auch redundante Anführungszeichen in der Mitte der Zeichenfolge. – yonisha

+0

Nicht redundant, aber die Zeichen in der Mitte (und das Komma) bedeuten, dass der Inhalt als String-Array analysiert wird. – Matthew