2015-05-05 3 views
1

Я в настоящее время обучение Нокаут, и я это требование о том, что вызов Ajax к API возвращает JSON-закодирован объект, который имеет такую ​​структуруСоздание слоистую класс DTO для Ajax

DocInfo { 
    CustomerInfo { 
     Name, 
     Adress, 
     XXXXXX 
    }, 
    ProductInfo, { 
     Name, 
     Price 
    }, 
    ThirdParty { 
     Property1, 
     Property2 
    }, 
    Whatever { 
     Property1, 
     Property2, 
     Property2 
    } 
} 

я создаю классы сериализации C# как DTO, но я не уверен, как подходить к этому в классе C#, чтобы вернуть клиентской стороне желаемую структуру объекта.

Любая помощь будет принята с благодарностью! Благодаря!

+0

Вы пытаетесь сохранить пространство имен в вашем JSON, которое вы описали здесь, или это только для иллюстрации отношений? –

+0

@DavidL Я отредактировал его, полагая, что это было только для иллюстративных целей. Алонсо, если бы это была ошибка, каким-либо образом отмените мое редактирование. – Tomalak

+0

Я пытаюсь сохранить namespacing из C# в JSON –

ответ

3

Вы также можете получить правильный результат с Newtonsoft.JSON:

Working .Net Fiddle

Результат

{"CustomerInfo":{"Name":"A","Adress":"B"},"ProductInfo":{"Name":"A","Price":"1"},"Whatever":{"Property1":"1","Property2":"2"}} 

C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using Newtonsoft.Json; 

public class Program 
{ 

    public static void Main() 
    { 
     var info = new DocInfo(){ 
      CustomerInfo = new CustomerInfo(){Name = "A", Adress = "B"}, 
      ProductInfo = new ProductInfo(){Name = "A", Price = "1"}, 
      Whatever = new Whatever(){Property1 = "1", Property2 = "2"} 
     }; 
     var output = JsonConvert.SerializeObject(info); 
     Console.WriteLine(output); 
    } 
} 

public class DocInfo{ 
    public CustomerInfo CustomerInfo{get;set;} 
    public ProductInfo ProductInfo{get;set;} 
    public Whatever Whatever{get;set;} 
} 

public class CustomerInfo{ 
    public string Name{get;set;} 
    public string Adress{get;set;} 

} 


public class ProductInfo{ 
    public string Name{get;set;} 
    public string Price{get;set;} 

} 


public class Whatever{ 
    public string Property1{get;set;} 
    public string Property2{get;set;} 

} 
1

Вот пример LINQPad:

void Main() 
{ 
    var docInfo = new DocInfo{CustomerInfo = new CustomerInfo{ Name = "Todor", Address = "101 Local Drive", XXXXXX = "YYYYYY" }}; 
    var docInfoJson = new JavaScriptSerializer().Serialize(docInfo); 
    docInfoJson.Dump(); 
} 

// Define other methods and classes here 
public class DocInfo 
{ 
    public CustomerInfo CustomerInfo {get;set;} 
} 

public class CustomerInfo 
{ 
    public string Name {get;set;} 
    public string Address {get;set;} 
    public string XXXXXX {get;set;} 
} 

Результат:

{"CustomerInfo":{"Name":"Todor","Address":"101 Local Drive","XXXXXX":"YYYYYY"}} 

Вы можете расширить, что в случае необходимости.

Сообщите мне, если это не то, что вам нужно.

+0

вот что мне нужно! Большое спасибо ... (Y) –

+0

@AlonsoQuesada отлично. – CrnaStena