2014-01-06 6 views
-1

Мне нужен окончательный формат json следующим образом, и это должно быть динамическим.Как создать json-формат с помощью json.net в C#

{ 
     "product_items" : 
     [ 
     { 
      "_at" : 1,     
      "product_id" : "999" 
     },  
     { 
      "_at" : 2, 
      "quantity" : 2.00 
     }, 
     { 
      "_delete_at" : 3  
     } 
     ] 
    } 

Как создать формат JSON, как указано выше в code._at поле dynamic.sometimes это может быть 2, а иногда это может быть 10.Я не имеют представление о генерировать JSON динамически в C#.

class Test 
    { 
     public ProductItem[] product_items { get; set; } 


     class ProductItem 
     { 
      public int[] _at { get; set; } 
      public int[] _delete { get; set; } 
      public int[] quantity { get; set; } 
      public string[] product_id{get;set;} 
     } 
    } 

Я создал свойства для json, как указано выше.

+1

Просьба представить подробную информацию *** код. Поле _at является динамическим. Иногда это может быть 2, и иногда это может быть 10 *** – Satpal

+0

теперь я создал json с 2 [_at] times.it будет продолжать меняться. – Arjunan

+0

Вы имеете в виду '{" _at ": 1," _ at ": 2," _at ": 3}'. Это будет недопустимый JSON – Satpal

ответ

1

Я использую Newtonsoft library

Ваш класс должен выглядеть следующим образом:

public class ProductItem 
{ 
    public int _at { get; set; } 
    public string product_id { get; set; } 
    public double? quantity { get; set; } 
    public int? _delete_at { get; set; } 
} 

public class ProductItemObject 
{ 
    public List<ProductItem> product_items { get; set; } 
} 

пример на сериализации:

List<ProductItem> list = new List<ProductItem>(); 
ProductItemObject o = new ProductItemObject { product_items = list }; 

var item1 = new ProductItem { _at = 1, product_id = "001" }; 
var item2 = new ProductItem { _at = 2, quantity = 2.00 }; 
var item3 = new ProductItem { _delete_at = 3 }; 

list.Add(item1); 
list.Add(item2); 
list.Add(item3); 


string json = JsonConvert.SerializeObject(o, Formatting.Indented); 

// json string : 
//   { 
// "product_items": [ 
// { 
//  "_at": 1, 
//  "product_id": "001", 
//  "quantity": null, 
//  "_delete_at": null 
// }, 
// { 
//  "_at": 2, 
//  "product_id": null, 
//  "quantity": 2.0, 
//  "_delete_at": null 
// }, 
// { 
//  "_at": 0, 
//  "product_id": null, 
//  "quantity": null, 
//  "_delete_at": 3 
// } 
// ] 
//} 

Альтернативой полный динамический, который получает ЕВ такая же строка Json без какой-либо модели:

var jsonObject = new JObject(); 
dynamic objectList = jsonObject; 

objectList.product_items = new JArray() as dynamic; 

dynamic item = new JObject(); 
item._at = 1; 
item.product_id = "999"; 
objectList.product_items.Add(item); 

item = new JObject(); 
item._at = 2; 
item.quantity = 2.00; 
objectList.product_items.Add(item); 

item = new JObject(); 
item._delete_at = 3; 
objectList.product_items.Add(item); 

string json = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObject, Formatting.Indented); 
0

Ну, если я вас понимаю правильно, и вы просто должны быть в состоянии генерировать, что JSON, список товаров должны быть динамичными с, возможно, анонимные классы затем:

public class Products 
{ 
    public Products() 
    { 
     product_items = new List<dynamic>(); 
    } 
    public List<dynamic> product_items { get; set; } 
} 

products.product_items.Add(new { _at = 1, product_id = "999" }); 
Смежные вопросы