Как получить вложенные значения из Json и показать в текстовом поле? - PullRequest
1 голос
/ 10 мая 2019

Итак, у меня есть следующий JSON ниже:

{
  "Name": "Program",
  "Version": "5.5,
  "Packages": 
  {
    "Package": 
     [
      {
        "Pack": "Application1",
        "PackName": "Application1.zip",
      },
      {
        "Pack": "Application2",
        "PackName": "Application2.zip",
      }
    ]
  }
}

Я знаю, как получить значения Name и Versions с этим кодом:

string source = Jsontextbox.Text;
dynamic Name = JObject.Parse(source);
dynamic Version = JObject.Parse(source);
textbox1.Text = (Name.Name + Version.Version);

Но яхотел бы знать, как это сделать для значений пакетов.

Я бы хотел, чтобы вывод был в текстовом поле следующим:

Pack: Applcation1 
PackName: Application1.zip

Pack: Applcation2 
PackName: Application2.zip

Я бы предпочел использовать JSON.Net, но я в порядке с другими опциями.

РЕДАКТИРОВАТЬ: Что я пытаюсь:

public class Packages
    {
        public Package[] Package { get; set; }
    }
public class Package
    {
        public string Pack { get; set; }
        public string PackageName { get; set; }

    }
string source = textBox1.Text;
var result = JsonConvert.DeserializeObject<Package>(source);
textBox6.Text = result.Pack;

Но по какой-то причине это не работает

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Вы можете попробовать это

JObject json = JObject.Parse(source);
JObject packages = JObject.Parse(json["Packages"].ToString());
JArray packageArray = (JArray)packages["Package"];

for (var i = 0; i < packageArray.Count; i++) {
    var pack = JObject.Parse(packageArray[i].ToString())["Pack"];
    var packName = JObject.Parse(packageArray[i].ToString())["PackName"];

    Console.WriteLine(pack);
    Console.WriteLine(packName);
}
0 голосов
/ 10 мая 2019

Используя NestedList

    class A{
    string Name{set;get};
string Version{set;get};
List<B>nestedList{set;get};
    }

class B{
string Pack{set;get};
string PackName{set;get};
}

, вы получаете строго типизированные объекты

A objA = JsonConvert.DeserializeObject (ваш объект) больше информации

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