APEX JSON десериализовать - PullRequest
3 голосов
/ 23 марта 2012

У меня есть строка JSON с вложенными объектами с динамическими именами, которые меняются каждый раз.Для примера:

{
    "Objects": {
        "dynamicName1": {
            "name": "test"
        },
        "dynamicName2": {
            "name": "test"
        }
    }
}

Мне было интересно, как можно десериализовать эту строку в APEX, используя классы-оболочки?

Я попробовал это:

public class masterobj
{   public childobj Objects;    
}

public class childobj
{   public el dynamicName1;
    public el dynamicName2;     
}

public class el
{   public string name;
}

String s = '{"Objects":{"dynamicName1":{"name":"test"},"dynamicName2":{"name":"test"}}}';
masterobj mo = (masterobj)JSON.deserialize(s, masterobj.class);

, который работает хорошокогда вы объявили имена динамических переменных в классе для каждого вложенного объекта.

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 23 марта 2012

Вы не сможете десериализовать подобную структуру с помощью функций привязки данных парсера json, для чтения вам потребуется потоковый парсер json .

0 голосов
/ 05 марта 2014

Используйте карту:

public class masterobj
{   
    Map<String, el> Objects;
}
...