在列表中选择一个列表,并为其添加一个JSON项
本文关键字:一个 列表 添加 JSON 选择 | 更新日期: 2023-09-27 18:28:00
我正在尝试制作一个JSON,其中有多个地址,每个地址都有自己的多个联系人。就这一点而言,我将其归类为:
public class Supplier
{
public decimal N100 { get; set; }
public Nullable<decimal> N101 { get; set; }
public Nullable<decimal> N102 { get; set; }
public string S1 { get; set; }
public string S2 { get; set; }
public string S3 { get; set; }
public Nullable<System.DateTime> D1 { get; set; }
public Nullable<System.DateTime> D2 { get; set; }
public Nullable<System.DateTime> D3 { get; set; }
public List<SMFAdd> contacts = new List<SMFAdd>();
}
public class SupplierRoot
{
public List<Supplier> address = new List<Supplier>();
}
其中SMFAdd是另一类。
我可以在列表中添加地址为:
Models.SupplierRoot s = new Models.SupplierRoot();
s.address.Add(sd); // where sd is the return output from database.
但是当我尝试将相应的联系人添加到地址时:
s.address.Select(x => x.contacts.Add(sd));
编译器给出以下错误
无法从用法推断类型参数方法
我怎样才能使它工作?我想制作一个JSON作为:
{
"address": {
"contacts": [
{
"N100": 6.0,
"N101": 7.0,
"N102": 2.0,
"S1": "Ghulam",
"S2": "Suppliers",
"S3": "Sales",
"D1": null,
"D2": null,
"D3": null,
},
{
"N100": 7.0,
"N101": 7.0,
"N102": null,
"S1": "07",
"S2": null,
"S3": null,
"D1": null,
"D2": null,
"D3": null,
},
{
"N100": 8.0,
"N101": 7.0,
"N102": null,
"S1": "1010",
"S2": null,
"S3": null,
"D1": null,
"D2": null,
"D3": null,
}
],
"N100": 0.0,
"N101": null,
"N102": null,
"S1": "Main Market",
"S2": "ISB",
"S3": null,
"D1": null,
"D2": null,
"D3": null,
},
"address": {
"contacts": [
{
"N100": 6.0,
"N101": 7.0,
"N102": 2.0,
"S1": "Ghulam",
"S2": "Suppliers",
"S3": "Sales",
"D1": null,
"D2": null,
"D3": null,
},
{
"N100": 7.0,
"N101": 7.0,
"N102": null,
"S1": "07",
"S2": null,
"S3": null,
"D1": null,
"D2": null,
"D3": null,
},
{
"N100": 8.0,
"N101": 7.0,
"N102": null,
"S1": "1010",
"S2": null,
"S3": null,
"D1": null,
"D2": null,
"D3": null,
}
],
"N100": 0.0,
"N101": null,
"N102": null,
"S1": "Main Market",
"S2": "ISB",
"S3": null,
"D1": null,
"D2": null,
"D3": null,
}
}
您正试图通过用于选择项目的Select操作在Contacts中添加项目。您可以使用ForEach对每个地址进行迭代,并在联系人列表中添加项目。
在每个联系人中添加地址
s.address.Foreach(x => x.contacts.Add(sd));
现在转换为Json
var jsonString = JsonConvert.SerializeObject(s)
对于JsonConvert,您需要有newtonsoft包的引用。
对于使用json,您可以使用json.Net(Newtonsoft),它是一个使用起来非常简单的框架。在包含Newtonsoft.Json
之后,您可以序列化如下对象:
var myObject = WhatEverObject();
var json = JsonConvert.SerializeObject(myObject);
如果你想反序列化你的json字符串:
var myObject = JsonConvert.DeserializeObject<WhatEverObject>(json);
添加地址:
s.address.Foreach(x => x.contacts.Add(sd));
我在这里可以推断出"sd"有地址和联系人列表。SMFAdd和Supplier的结构不同。供应商有一个联系人列表,SMFAdd拥有除联系人列表之外的所有供应商信息。因此,您试图添加到列表中的结构存在冲突。因此出现了错误。
简单
address.add(sd)和address.contact.add(sd)不同,因为contact不再包含联系人列表,而是address do