2017-08-21 2 views
-3

Ich versuche, die Liste der JSON-Objekte durchzulaufen und sie in indizierten JSON zu konvertieren.Int wird nicht als Zeichenfolge im JSON-Objekt angezeigt

Unten finden Sie den Code habe ich geschrieben:

private string ItemsAsJson(List<string> jsonItemList) 
{ 
    string ItemAsJson = ""; 
    for (int i = 0; i < jsonItemList.Count; i++) 
    { 
     string index = i.ToString(); 
     ItemAsJson += "{ " + index + " : " + jsonItemList[i] + "},"; 
    } 
    return ItemAsJson; 
} 

Aber ich bekomme das Objekt wie hier unten:

{ 
    0: { 
     "item_type": "Batch", 
     "item_id": "82", 
     "bill_item_name": "A TO Z", 
     "quantity": "1", 
     "inventory_id": "82", 
     "individual_price": "2.90", 
     "batch_no": "", 

Wie konvertiere ich die 0 in der obigen Text-String ("0 ")?

+5

Sie die wörtliche JSON-String auszuschreiben, so setzen Anführungszeichen um den 0? –

+0

Ihr gesamter enthaltender Datentyp ist eine Zeichenfolge. Woher kommt das "Objekt", von dem du im zweiten Block kommst? kommt das direkt von der 'ItemsAsJson()' Funktion? – axlj

+2

Eine Alternative ist zu tun, was in dieser Antwort vorgeschlagen wird. Lassen Sie die Leute, die JSON-Serialisierer entwickeln, die korrekte JSON-Syntax definieren. https://stackoverflow.com/questions/1056121/how-to-create-json-string-in-c-sharp – axlj

Antwort

-1

Die beste Antwort wäre, eine JSON-Parser-Bibliothek wie Json.NET zu verwenden und den JSON nicht manuell zu analysieren.

Wenn Sie aus irgendeinem Grund entscheiden, mit Ihrer Methode zu gehen, können Sie Anführungszeichen um die Indexnummer durch austretendes das Zitat in der Zeichenfolge wie \" hinzufügen:

private string ItemsAsJson(List<string> jsonItemList) 
{ 
    string ItemAsJson = ""; 
    for (int i = 0; i < jsonItemList.Count; i++) 
    { 
     string index = i.ToString(); 
     ItemAsJson += "{ \"" + index + "\": " + jsonItemList[i] + "},"; 
    } 
    return ItemAsJson; 
} 

Auf einer Seite beachten, wenn Sie bauen eine Zeichenfolge wie diese, würde ich mit StringBuilder statt += empfehlen:

private string ItemsAsJson(List<string> jsonItemList) 
{ 
    StringBuilder builder = new StringBuilder(); 
    for (int i = 0; i < jsonItemList.Count; i++) 
    { 
     builder.Append("{ \""); 
     builder.Append(i); 
     builder.Append("\":"); 
     builder.Append(jsonItemList[i]); 
     builder.Append("},"); 
    } 
    return builder.ToString(); 
} 
Verwandte Themen