Одной из альтернатив является использование возможностей типа объекта JSON. Вместо того, чтобы указывать массивы JSON для всех строк, определите значения как числа, логические значения и т. Д. Таким образом, используемая вами библиотека JSON (я полагаю, Java API из json.org) сможет автоматически конвертировать значения для соответствующего определения.
Вот пример:
// JSON String: [1, false, "false", "2"] rather than ["1", "false", "false", "2"]
String jsonEx = "[1,false,\"false\",\"2\"]";
// convert to JSONArray
JSONArray array = new JSONArray(jsonEx);
// print out values and types
for (int i = 0; i < array.length(); i++) {
Object o = array.get(i);
System.out.printf("%-8s\t:%s\n", o,o.getClass());
}
Если вы запустите этот код, вы получите следующий вывод:
1 :class java.lang.Integer
false :class java.lang.Boolean
false :class java.lang.String
2 :class java.lang.String
Как видите, библиотека правильно преобразовала все типы данных, кроме ожидаемого символа. Причина в том, что в JSON нет способа определить тип символа по сравнению со стандартной строкой. Если вы можете обойти это ограничение, то этот подход должен сделать ваше приложение намного проще и проще в обслуживании.
Еще одним преимуществом этого подхода является то, что вы можете использовать его во время прямого преобразования между строками JSON и объектами Java, содержащими атрибуты массива объектов.