Как я могу получить доступ к полям JArray анонимного типа в C#? - PullRequest
1 голос
/ 11 февраля 2020
string sampleString = "[{\"id\":\"1\",\"status\":302},{\"id\":\"2\",\"status\":302},{\"id\":\"3\",\"status\":302},{\"id\":\"4\",\"status\":302}]";     
JArray json = JArray.Parse(sampleString );
TempValue t;
foreach(JObject obj in json)
{
t = new TempValue {
id =//id of json,
status=//state of json
};
}

я хочу получить доступ к значению json анонимный объект c для назначения объекту t.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Всегда хорошо работать с типизированным объектом, чтобы избежать ошибок при печати. В этом случае создайте класс со структурой строки json следующим образом:

   public class StatusObj
   {
     public string id { get; set; }
     public int status { get; set; }
   }

Десериализуйте строку json в список вашего класса следующим образом:

List<StatusObj> obj = JsonConvert.DeserializeObject<List<StatusObj>>(sampleString);

И тогда вы можете l oop просмотреть список следующим образом:

foreach (var item in obj)
 {
   var id = item.id;
   var status = item.status;
 }

Весь код выглядит так:

  class Program
{
    static void Main(string[] args)
    {
        string sampleString = "[{\"id\":\"1\",\"status\":302},{\"id\":\"2\",\"status\":302},{\"id\":\"3\",\"status\":302},{\"id\":\"4\",\"status\":302}]";

        List<StatusObj> obj = JsonConvert.DeserializeObject<List<StatusObj>>(sampleString);

        foreach (var item in obj)
        {
            var id = item.id;
            var status = item.status;
        }

    }
}

public class StatusObj
{
    public string id { get; set; }
    public int status { get; set; }
}

NB. Необходимо установить пакет Newtonsoft. Json. Вы также можете конвертировать любой json в класс здесь

0 голосов
/ 11 февраля 2020

Индексатором

foreach(JObject obj in json)
{
    t = new TempValue {
    id = obj["id"].ToString() ,
      ...   
};

Свойство Object.Item (String)

Получает или задает JToken с указанным именем свойства.

...