我正在尝试制作一个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,
}
}
答案 0 :(得分:1)
您正尝试通过选择操作在“联系人”中添加项目,该操作用于选择项目。您可以使用ForEach迭代每个地址并在联系人列表中添加项目。
在每个联系人中添加地址
s.address.Foreach(x => x.contacts.Add(sd));
现在转换为Json
var jsonString = JsonConvert.SerializeObject(s)
对于JsonConvert,您需要引用 newtonsoft 包。
答案 1 :(得分:0)
对于使用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));
答案 2 :(得分:0)
我在这里可以推断的是&#34; sd&#34;有地址和联系人列表。 SMFAdd和供应商的结构是不同的。供应商有一个联系人列表,SMFAdd包含除联系人列表之外的所有供应商。因此,您尝试添加到列表中的结构存在冲突。因此错误。
简单地
address.add(sd)和address.contact.add(sd)是不同的,因为联系人不会再次包含联系人列表但地址为