Сериализиране на карта с различни типове ключове в json

Имам картографиране от низове към списък с низове в 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 са цели числа.

Как мога да конвертирам моята карта по елегантен и ефективен начин?


person Adam Matan    schedule 26.02.2012    source източник


Отговори (1)


Това, което се опитвате да направите, не е валиден 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>, ако искате да си позволите да поставите както низови, така и цели числа. Те обаче ще бъдат сериализирани само като низове.

person Boris Strandjev    schedule 26.02.2012