Сериализация карты с различными типами ключей в json - PullRequest
1 голос
/ 26 февраля 2012

У меня есть сопоставление между строками и списком строк в Java:

"100"  -> ["New York"]
"200"  -> ["Geneva", "Tel Aviv"]
"300"  -> ["Rome", "Paris", "Atlanta"]
"400a" -> ["Los Angeles"]

Я хочу преобразовать это в JSON, используя gson .99% ключей являются целыми числами, но возможны опечатки (например, 400a. Мой желаемый результат:

{
    100    : ["New York"], 
    200    : ["Geneva", "Tel Aviv"],
    300    : ["Rome", "Paris", "Atlanta"],
    "400a" : ["Los Angeles"]
}

Обратите внимание, что "400a" - это строка, а 100, 200, 300 - целые числа.

Как я могу преобразовать мою карту элегантным и эффективным способом?

1 Ответ

2 голосов
/ 26 февраля 2012

То, что вы пытаетесь сделать, не является действительным JSON.См. Спецификацию: http://www.json.org/. Имена атрибутов всегда должны быть строками, числа не допускаются.Если вы хотите получить следующий json:

{
    "100"  : ["New York"], 
    "200"  : ["Geneva", "Tel Aviv"],
    "300"  : ["Rome", "Paris", "Atlanta"],
    "400a" : ["Los Angeles"]
}

Это, конечно, очень просто: вы либо используете Map<String, String> в качестве ввода (что, я полагаю, вы уже делаете), либо можете передать Map<object, String>, если вы хотите позволить себе вводить как строковые, так и целочисленные значения.Однако они все равно будут сериализованы только как строки.

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