2016-02-18 2 views
2

У меня есть 2 классов следующегосериализация массива с помощью Джексона

class Rules{ 

@JsonProperty("rules") 
Rule [] rules 
} 

class Rule{ 
@JsonProperty("a1") 
String attrubite1; 
} 

Я сериализован это с помощью JSON и производит что-то вроде

{ 
    "rules": [{ 
     "a1": "somedataForRule1" 
    }, { 
     "a1": "somedataforTule1" 
    }] 
} 

Я хочу JSON быть как

{ 
    "rules": ["rule":{ 
     "a1": "somedataForRule1" 
    }, 
    "rule":{ 
     "a1": "somedataforTule1" 
    }] 
} 

Как это сделать?

МОЯ код:

Rules rules = new Rules(); 
rules.setRules(new Rule[]{r1,r2}); 
Strings = objectMapper.writeValueAsString(rules); 
+0

Можете ли вы показать код? – Hiranya

+0

@ Хиранья добавил мой код – user93796

ответ

1

В массивах мы не можем иметь ключи. Массивы имеют только индексы в качестве ключей.
Так следующее недействителен

JSON
[ 
    "a": {...} 
] 

Чтобы иметь ключи нам понадобится карта. Итак, справедливо следующее.

{ 
    "a": {...} 
} 

Так что вы не хотите, потому что вы просите Джексона создать недействительный json. Единственный способ взломать это - создать свою собственную утилиту.

Редактировать

Есть у уверен, что его недействительным JSON?

www.json.org enter image description here

+0

Уверен ли он его недействительный json? – user93796