在列表中选择一个列表,并为其添加一个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,
  }
}

在列表中选择一个列表,并为其添加一个JSON项

您正试图通过用于选择项目的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