Приложение магазина C #, получающее переменные данные Json

1

Я получил файл JSON, который создается как показано ниже. Файл JSON в порядке (проверен с помощью проверки JSON). Проблема заключается в том, что после "характеристик" "название" и "значение" характеристик могут быть переменными, как вы можете видеть ниже (я сделал одну характеристику совершенно нелогичной, просто чтобы сделать ясно, что это действительно может быть что угодно).

Это мой код С# для извлечения данных: Sidenote: его тестирование без характеристик и что работает. Проблема в том, что я не могу знать, что может быть "Title" (левое значение) характеристики, это действительно может быть что угодно. Итак, как я могу извлечь характеристики из файла, не зная его значения?

edit: Мне нужно значение, которое находится между "", возможно, вы знаете лучший способ?

foreach (JsonValue groupValue in jsonArray)
        {

            JsonObject groupObject = groupValue.GetObject();
            ProductGroup group = new ProductGroup(groupObject["UniqueId"].GetString(),
                                                        groupObject["Title"].GetString(),
                                                        groupObject["ImagePath"].GetString());

            foreach (JsonValue itemValue in groupObject["Items"].GetArray())
            {

                JsonObject itemObject = itemValue.GetObject();
                ProductItem product = new ProductItem(itemObject["ItemNo"].GetString(),
                                                itemObject["Description"].GetString(),
                                                itemObject["UnitOfMeasure"].GetString(),
                                                itemObject["Delivery"].GetString(),
                                                Convert.ToInt32(itemObject["InPurchaseOrder"].GetString()),
                                                Convert.ToInt32(itemObject["InSalesOrder"].GetString()),
                                                itemObject["ItemBlocked"].GetString(),
                                                itemObject["ItemStatus"].GetString(),
                                                itemObject["UnitPriceExclVAT"].GetString(),
                                                itemObject["PurchasePrice"].GetString(),
                                                itemObject["Margin"].GetString(),
                                                Convert.ToInt32(itemObject["ActualStock"].GetString()),
                                                itemObject["ImagePath"].GetString(),
                                                Convert.ToBoolean(itemObject["IsActivated"].GetString()));

                foreach (JsonValue characteristicValue in itemObject["Characteristics"].GetArray()){
                    JsonObject characteristicObject = characteristicValue.GetObject();
                    ItemCharacteristic characteristic = new ItemCharacteristic(characteristicObject[""].GetString(),
                                                                                                    characteristicObject[""].GetString())
                }

Данные Json:

{"Groups":[
{
"UniqueId": "Group1",
"Title": "Electrisch Gereedschap",
"ImagePath": "Assets/Group1.jpg",
"Items":
[
 {
    "ItemNo": "S010005",
    "Description": "Boormachine BOSCH GBM 13-123456",
    "UnitOfMeasure": "STUKS",
    "Delivery" : "2 Weken",
    "InPurchaseOrder" : "10",
    "InSalesOrder" : "49",
    "UnitPriceExclVAT": "90",
    "PurchasePrice": "60",
    "Margin": "30",
    "ActualStock": "100",
    "ItemBlocked" : "Nee",
    "ItemStatus": "Vrijgegeven",
    "ImagePath": "Assets/S010005_Large.jpg",
    "IsActivated": "true",
    "Characteristics":
    [{
        "Merk": "Bosch",
        "Kleur": "Blauw",
        "Prijsklasse": "1-100",
        "Toerental": "1500rpm",
        "Garantie": "1 Jaar"
    }]      
 },
 {
    "ItemNo": "S010006",
    "Description": "Boormachine BOSCH PSB 600RE",
    "UnitOfMeasure": "STUKS",
    "Delivery" : "2 Weken",
    "InPurchaseOrder" : "20",
    "InSalesOrder" : "6",
    "UnitPriceExclVAT": "75",
    "PurchasePrice": "50",
    "Margin": "25",
    "ActualStock": "31",
    "ItemBlocked" : "Nee",
    "ItemStatus": "Vrijgegeven",        
    "ImagePath": "Assets/S010006_Large.jpg",
    "IsActivated": "true",
    "Characteristics":
    [{
        "Fruit": "No",
        "Banana": "No",
        "Speed": "1-100",
        "Spinning": "yes",
        "Time": "1 year"
    }]
 }
Теги:
windows-store-apps

1 ответ

0

Хорошо, я сделал что-то, что работает, если кто-то столкнулся с этой проблемой: вот как я это делаю.

foreach (JsonValue characteristicValue in itemObject["Characteristics"].GetArray()){
                    JsonObject characteristicObject = characteristicValue.GetObject();

                    var toObject = characteristicObject.GetObject();         
                    var lijst = toObject.ToList();

                    foreach (KeyValuePair<string, IJsonValue> characteristics in lijst)
                    {
                        string productCharacteristic = characteristics.Key.ToString();
                        ItemCharacteristic characteristic = new ItemCharacteristic(productCharacteristic, characteristicObject[productCharacteristic].GetString());

                        product.Characteristics.Add(characteristic);
                    }
                }

вместо

                foreach (JsonValue characteristicValue in itemObject["Characteristics"].GetArray()){
                JsonObject characteristicObject = characteristicValue.GetObject();
                ItemCharacteristic characteristic = new ItemCharacteristic(characteristicObject[""].GetString(),
                                                                                                characteristicObject[""].GetString())
            }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню