2017-09-21 3 views
3

ich so ein JSON-Objekt erhalten mag:erstellen Objekt, das Array enthält [] andere Objekte

"datasets": [{ 
       "label": "# of Votes", 
       "data": [20, 10, 3], 
       "backgroundColor": [ 
         "#ccf9d6", 
         "#ccf9d6", 
         "#ccf9d6" 
           ], 
       "borderWidth": 1 
      }] 

aber vor Serialisierung Ich habe Objekt zu erstellen, und ich weiß nicht, wie es in Objekt in Code aussehen sollte hinter. Ich habe so etwas, aber es ist falsch.

datasets = new ChartDatasets[4] 
       { 
        label = "# of Votes", 
        data = new int[3] { 20, 10, 3 }, 
        backgroundColor = new string[3] { "#ccf9d6", "#ccf9d6", "#ccf9d6" }, 
        borderWidth = 1 
       } 

Kann mir jemand helfen?

+1

Was meinst du mit "es ist whrong"? Hast du versucht, das zu serialisieren? Was war das Ergebnis? Aus meiner Sicht sollte es die oben angegebene Ausgabe erzeugen. Anyway: Sie können die Dimensionen und sogar den Typ Ihres Arrays weglassen, wenn Sie es direkt initialisieren .: 'data = new [] {10, 20, 30}' – HimBromBeere

+0

Es ist falsch, weil es die Fehler im Code hervorhebt. 'label, data, backgroundColor, borderWidth' _ .. existiert nicht im aktuellen Kontext_ – Adriano

Antwort

5

Obwohl Sie ein Array vom Typ ChartDatasets schaffen, die zu vier Instanzen dieses Typs halten kann, eröffnen Sie bitte ein Instanz dieses Typs erstellen. Enden Sie brauchen diese stattdessen:

datasets = new ChartDatasets[4] { 
       new ChartDatasets { 
        label = "# of Votes", 
        data = new int[3] { 20, 10, 3 }, 
        backgroundColor = new string[3] { "#ccf9d6", "#ccf9d6", "#ccf9d6" }, 
        borderWidth = 1 
       } 
      } 

jedoch auch die Dimension auslassen kann und sogar die Art Ihrer Arrays als der Compiler wird versuchen, die richtigen Typen automatisch zu schließen:

datasets = new [] { 
       new ChartDatasets { 
        label = "# of Votes", 
        data = new [] { 20, 10, 3 }, 
        backgroundColor = new [] { "#ccf9d6", "#ccf9d6", "#ccf9d6" }, 
        borderWidth = 1 
       } 
      } 

Als aisde Sie sollten in Betracht ziehen, Instanzen Ihres Typs in Singular zu benennen, es sei denn, sie repräsentieren wirklich eine Art von Sammlung. In Ihrem Fall haben Sie ein Array (das ist sicherlich eine Sammlung) von Instanzen des Typs CharDataset.

2

Es gibt eine neat website, die JSON in netten C# -Code übersetzt. Ihre Frage ist als C# markiert, also rate ich, was Sie wollen.

Es gibt diesen für Ihren Code:

public class Dataset 
{ 
    public string label { get; set; } 
    public List<int> data { get; set; } 
    public List<string> backgroundColor { get; set; } 
    public int borderWidth { get; set; } 
} 

public class RootObject 
{ 
    public List<Dataset> datasets { get; set; } 
} 

Soweit ein Objekt zu schaffen, die ein Array von anderen Objekten haben, würde ich über einen den Ansatz aus dem Code empfehlen, wo Sie eine Liste der Klassen und jede Klasse hat eine Reihe von Objekten

Verwandte Themen