如何在 C# 中使用 json.net 创建 JSON 格式



我需要最终的json格式,如下所示,这应该是动态的。

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

如何在code._at字段中创建上述 json 格式是动态的。有时可能是 2,有时可能是 10。我不知道在 c# 中动态生成 json。

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 的属性,如上所述。

我正在使用Newtonsoft库

您的类应该更像这样:

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);
好吧

,如果我正确理解您并且您只需要能够生成该 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" });

相关内容

  • 没有找到相关文章

最新更新