2016-10-22 2 views
1

У меня есть JSON как это:GSON Deserialize/сериализации JSON строка, которая неопределенное имена ключей

# "trig_cond": { 
#  "_and": { 
#    "param1": ["op", "value1"], 
#    "param2": ["op", "value2"], ... 
#  }, 
#  "_or": { 
#    "param1": ["op", "value1"], 
#    "param2": ["op", "value2"], ... 
#  } 
# } 

«й»/«_ или» часть имеет неопределенное количество ключей, отображающие в список объектов (каждый из которых содержит два элемента). Как можно десериализовать это в объект java? Я просмотрел различные параметры десериализации, но я не понимаю, как это сделать для этого примера json.

ответ

1

Существует несколько различных вариантов, которые вы можете принять в зависимости от ваших требований. Одним из самых простых решений, которые вы можете предпринять, когда у вас есть неизвестное количество ключей, - это просто оставить эти части вашего POJO в качестве JSONObject.

Например, это POJO будет отвечать вашим требованиям, чтобы десериализовать JSON в объект java и по-прежнему обеспечивать гибкость, которой вы пользуетесь.

public class SamplePojo { 
    TrigCond trig_cond; 

    public static class TrigCond { 
     JsonObject _and; 
     JsonObject _or; 
    } 
} 

Вы также можете разделить их на разные файлы, если хотите.

Кроме того, так как в вашем примере, вы знаете, какие типы значений содержатся эти param1 и param2 элементов массива, вы могли бы вместо того, чтобы с помощью Map

Вот еще один пример, который вы можете предпочесть:

public class SamplePojo { 
    TrigCond trig_cond; 

    public static class TrigCond { 
     Map<String, String[]> _and; 
     Map<String, String[]> _or; 
    } 
} 

Дайте мне знать, если я правильно понял ваш вопрос!

Смежные вопросы