Десериализация строки JSON с помощью JavaScriptSerializer для возврата одного динамического объекта c вместо массива ключей и значений - PullRequest
4 голосов
/ 17 января 2020

Рассмотрим следующую JSON строку в C#:

{
    "BuyerRegion":"BuyerRegion [0][27]",
    "SellerRegion":"SellerRegion [0][29]",
    "HubRegion":"HubRegion [0][31]",
    "PartNo":"TINT_MNUM [0][3]",
    "BuyerCompID":"BuyerCompId [0][28]",
    "SellerCompId":"SellerCompId [0][30]",
    "HubCompId":"HubCompId [0][32]"
}

Затем я попытался десериализовать строку в динамический c объект в C#, используя:

object obj = new JavaScriptSerializer().Deserialize<object>(s); //where s contains the JSON string

Однако возвращаемое obj представляет собой массив пар ключ / значение:

enter image description here

Любая идея, как я могу сделать их десериализованными в одну один динамический c объект, где я могу получить доступ к свойствам, используя:

obj.BuyerRegion //returns "BuyerRegion [0][27]"

JsonConvert / NewtonSoft не является выбором.

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Попробовав несколько методов, я понял, что получить доступ к свойствам так же просто, как вызвать:

obj["BuyerRegion"]
0 голосов
/ 17 января 2020

Вы можете использовать вместо object некоторые ModelDto и приводить к ним, я имею в виду:

public class ModelDto {
  public string Key {get;set;}
  public string Value {get;set;}
}

Или вы можете использовать следующий код для получения значения из словаря по ключу:

string buyerRegion = dict["BuyerRegion"];

Или вы можете использовать ExpandoObject, как это предлагается в комментариях к вашему вопросу.

...