2017-10-30 1 views
-1

Ich habe den folgenden Code, der C# -Klassen in JSON-Objekte serialisieren muss. Das Problem ist, dass ich die anderen Klassen nicht serialisieren kann und eins geht. Wie man die variablen Daten allen anderen Klassen zuweist, also kann ich sie in eine json Datei serialisieren.Serialisierung von C# -Klassen zu JSON

static void Main(string[] args) 
{ 
    Rootobject data = new Rootobject(); 

    var dataString = JsonConvert.SerializeObject(data); 

    File.WriteAllText("Output.json", dataString); 
} 

public class Rootobject 
{ 
    public string Number { get; set; } 

    public string RequestedDeviceType { get; set; } 

    public string DeliveryMethod { get; set; } 

    public Customer Customer { get; set; } 

    public Vehicle Vehicle { get; set; } 
} 

public class Customer 
{ 
    public Contacts Contacts { get; set; } 

    public string Name { get; set; } 

    public string Number { get; set; } 

    public bool OverrideData { get; set; } 
} 

public class Contacts 
{ 
    public string FirstName { get; set; } 

    public string Name { get; set; } 

    public string Email { get; set; } 

    public string City { get; set; } 

    public string Address { get; set; } 

    public string MobilePhone { get; set; } 
} 

public class Vehicle 
{ 
    public string VIN { get; set; } 

    public string MakeModelCode { get; set; } 

    public string LicensePlate { get; set; } 

    public string Make { get; set; } 

    public string Model { get; set; } 

    public int YearOfInitialRegistration { get; set; } 

    public string MotorType { get; set; } 

    public bool OverrideData { get; set; } 
} 

Meine Json Ausgabe nach Serialisierung aussehen sollte wie folgt

{ 
    "Number": "DTY28968YU", 
    "RequestedDeviceType": "MHubObd", 
    "DeliveryMethod": "ByHand", 
    "Customer": { 
     "Contacts": { 
     "FirstName": "Mike", 
     "Name": "Paul", 
     "Email": "[email protected]", 
     "City": "San Luis", 
     "Address": "No 10 Highway Road , San Luis", 
     "MobilePhone": "+54000000000" 

     }, 
     "Name": "John Doe", 
     "Number": "PolicyNumber24", 
     "OverrideData": true 
    }, 
    "Vehicle": { 
     "VIN": "VIN004001", 
     "MakeModelCode": "34010", 
     "LicensePlate": "SS 100 GP", 
     "Make": "RANGE ROVER", 
     "Model": "SPORT", 
     "YearOfInitialRegistration": 2016, 
     "MotorType": "Petrol", 
     "OverrideData": true 
    } 
} 
+0

Meine JSON-Datei sollte wie folgt aussehen –

+0

https://stackoverflow.com/questions/6201529/turn-c-sharp-object-into-a-json-string-in-net-4 – Stavm

+1

Wenn Sie nicht tun Zuweisen von Daten zu "Daten", die Referenztypen sind "null" und Sie werden es nicht serialisiert sehen. Warum versuchst du * nicht, Daten wie du zu zeigen und zu sehen, was passiert? – crashmstr

Antwort

0

Sie müssen nur die Daten instanziieren. Zum Beispiel:

var r = new Rootobject(); 
r.Customer = new Customer { Name = "John Doe", Number="PolicyNumber24", 
    OverrideData=true}; 
var dataString = JsonConvert.SerializeObject(r); 

Instanziieren Sie auch die anderen Klassen, und Ihre Serialisierung sollte funktionieren.

+0

wo hast du ger r.Kunden? –

+0

@ Carlos.Net: Sorry, Code hat keinen Sinn. Ich habe es den Variablennamen geändert. Es sollte jetzt kompilieren ;-) –