【问题标题】:How to create set of Multiple JSON with same header如何创建具有相同标头的多个 JSON 集
【发布时间】:2015-12-16 20:44:29
【问题描述】:

我有一个 JSON,之前要创建以下模式 打API,见下文

    "recipientSetInfos":    
     [
          {
            "recipientSetMemberInfos":          
            [
              {
                "fax": "",
                "email": ""
              }
            ],
            "recipientSetRole":         
            {
              "SIGNER": "enum",
              "APPROVER": "enum"
            },
            "signingOrder": 0
          }
        ]

使用这种预定义的格式,我想创建多个签名者集, 像下面这样。

   "recipientSetInfos": 
    [
      {
        "recipientSetMemberInfos": 
        [{

            "email": "def@gmail.com"
        }],
        "recipientSetRole": "SIGNER"
    }, {
        "recipientSetMemberInfos": [{

            "email": "abc@gmail.com"
        }],
        "recipientSetRole": "SIGNER"
    }],

我正在使用 C# 编程语言,如果我只是硬编码并发送。它 有效,但如果我想动态创建。我怎样才能做到这一点。 目前我正在使用这个像

        RecipientSetInfo rec_Info = new RecipientSetInfo();
        rec_Info.recipientSetMemberInfos = List_Emails;
        rec_Info.recipientSetRole = "SIGNER";
        List_Recipients.Add(rec_Info);

输出:

          {
            "recipientSetMemberInfos":
                [
                    {"email":"abc@ae.com"},
                    {"email":"def@gmail.com"},
                    {"email":"fgh@gmail.com"}
                ],
            "recipientSetRole":"SIGNER"
           }

但是使用这个逻辑,我没有得到想要的输出。这是 将所有 3 封电子邮件视为一封。

只是补充一点,在一位用户的帮助下,我尝试编写代码

foreach (var email in List_Emails)
{
    var rec_Info = new RecipientSetInfo();
    rec_Info.recipientSetRole = "SIGNER";
    List_Recipients.Add(rec_Info);
}

但问题依然存在,因为“recipientSetInfos”有两个细分,即recipientSetRole和recipientSetMemberInfos,其中“recipientSetMemberInfos”有一个属性Email。

所以当我将两个列表加在一起时,Email 为 Null

"recipientSetInfos":
[
    {"recipientSetMemberInfos":null,
     "recipientSetRole":"SIGNER"
    ‌​},
    {"recipientSetMemberInfos":null,
     "recipientSetRole":"SIGNER"
    }
]

我创建的两个元素的结构都像 -

public class RecipientSetMemberInfo
    {
        public string email { get; set; }
    }

    public class RecipientSetInfo
    {
        public List<RecipientSetMemberInfo> recipientSetMemberInfos { get; set; }
        public string recipientSetRole { get; set; }
    }

请推荐??

【问题讨论】:

    标签: c# asp.net json json.net


    【解决方案1】:

    您的问题是您创建 一个 RecipientSetInfo 而不是为每封电子邮件创建一个

    以下将循环遍历List_Emails 集合并将它们添加到列表List_Recipients

    foreach (var email in List_Emails)
    {
        var rec_Info = new RecipientSetInfo();
        rec_Info.recipientSetRole = "SIGNER";
        List_Recipients.Add(rec_Info);
    }
    

    【讨论】:

    • 感谢您的快速回复,我也尝试过这种方式。当我合并两个列表时出现的问题是 List_Emails 让我收到空电子邮件。好像我添加了快速手表并检查它那里确实有电子邮件值。请参阅下面的示例:“recipientSetInfos”:[{“recipientSetMemberInfos”:null,“recipientSetRole”:“SIGNER”},{“recipientSetMemberInfos”:null,“recipientSetRole”:“SIGNER”},{“recipientSetMemberInfos”:null, recipientSetRole":"SIGNER"},{"recipientSetMemberInfos":null,"recipientSetRole":"SIGNER"}]
    • 你能完整发布List_Emails类类型吗?
    • foreach (GridViewRow gridRow in grd_signers.Rows) { TextBox Tb1 = (TextBox)grd_signers.Rows[rowIndex].Cells[1].FindControl("Tb_email"); string Email = string.Empty; Email = Tb1.Text; RecipientSetMemberInfo rec_MemberInfo2 = new RecipientSetMemberInfo(); rec_MemberInfo2.email = Email; List_Emails.Add(rec_MemberInfo2); rowIndex++; } 我的名单越来越满了
    • 编辑您的帖子并将其添加到末尾,这样它会更具可读性,其他人也可以回答。
    • 首先真的非常感谢Orel。我从 3 小时开始就在这个问题上苦苦挣扎。您为我指出了正确的方向,我得到了我想要的。我只需要每次刷新电子邮件列表并在收件人之间创建新的。这样做用于删除一系列电子邮件并获得我想要的电子邮件索引..再次感谢..非常感谢..:)
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2011-03-15
    • 2014-10-21
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多