【问题标题】:Create JSON using Dictionary in C#在 C# 中使用字典创建 JSON
【发布时间】:2020-03-20 15:35:19
【问题描述】:

请我需要使用字典来创建如下 JSON。

 {
    "amount": "string",
    "currency": "string",
    "externalId": "string",
    "payer": {
            "partyIdType": "MSISDN",
            "partyId": "string"
    },
    "payerMessage": "string",
    "payeeNote": "string"
 }

下面的代码是我用来实现的,但它并没有完全按照我想要的方式得到它。 有人可以帮助我,看看我哪里出错了,这样我就可以做出必要的改变。非常感谢。

Dictionary<string, string> body = new Dictionary<string, string>
                    {
                        {"partyIdType","MSISDN"},
                        {"partyId","string"}
                    };
                    Dictionary<string, string> newbody = new Dictionary<string, string>
                    {
                        {"amount","string"},
                        {"currency","string"},
                        {"externalId","string"},
                        {"payer",DictionaryToString(body)},
                        {"payerMessage", "string"},
                        {"payeeNote","string"}
                    };
string data = JsonConvert.SerializeObject(newbody);
                    StringContent content = new StringContent(data.ToString(), Encoding.UTF8, "application/json");
                    HttpResponseMessage httpResponse = await client.PostAsync(uriRequest, content);



protected string DictionaryToString(Dictionary<string, string> dictionary)
    {
        string dictionaryString = "{";
        foreach (KeyValuePair<string, string> keyValues in dictionary)
        {
            dictionaryString += keyValues.Key + " : " + keyValues.Value + ", ";
        }
        return dictionaryString.TrimEnd(',', ' ') + "}";
    }

【问题讨论】:

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


    【解决方案1】:

    我不建议您自己生成 JSON 代码(就像您在 DictionaryToString 中所做的那样)。

    相反,您可以尝试像这样声明字典:

    Dictionary<string, object> body = new Dictionary<string, object>()
    {
        {"amount", "string"},
        {"currency", "string"},
        {"externalId", "string"},
        {"payer", new Dictionary<string, string>()
        {
            {"partyIdType","MSISDN"},
            {"partyId","string"}
        }},
        {"payerMessage", "string"},
        {"payeeNote", "string"}
    };
    
    string data = JsonConvert.SerializeObject(body);
    

    如果您使用object 作为字典,您可以输入您喜欢的任何类型,包括其他字典,它们将被正确序列化。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多