Создать JSON, используя словарь в C# - PullRequest
0 голосов
/ 20 марта 2020

Пожалуйста, мне нужно использовать словарь для создания 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(',', ' ') + "}";
    }

1 Ответ

1 голос
/ 20 марта 2020

Я не рекомендую генерировать код 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 для словаря, вы можете ввести любой тип, который вам нравится, включая другие словари, которые будут правильно сериализованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...