2015-06-24 2 views
0

У меня есть строка из URL-адреса, который, как я знаю, отформатирован как JSON, но я не знаю, какое поле можно изменить и размер. Я пытаюсь разобрать его в объект JSON, чтобы иметь возможность итерации на нем. строка выглядеть так:Строка, неизвестная JSON в Java

{ "_index": "my_index", "_ типа": "my_type", "_ идентификатор": "67663551-ed47-11e4-99b8-93bceafc1a4e", "_ версия": 4 , "нашли": правда, "term_vectors": { "описание": { "field_statistics": { "sum_doc_freq": 573723, "doc_count": 13992, "sum_ttf": 626963}, "термины": { "1930": { "doc_freq": 391, "TTF": 398, "term_freq": 1, "жетоны": [{ "позиция": 1, "start_offset": 7, "end_offset": 11}]}, "1er": { "doc_freq": 1406, "TTF": 1505, "term_freq": 1, "жетоны": [{ "позиция": 11, "start_offset": 64, "end_offset": 67}]}, "2em": { "doc_freq": 5, "TTF": 5, "term_freq": 1, "жетоны": [{ "позиция": 18, "start_offset": 104, "end_offset": 107}]}, "кость": { "doc_freq": 132, "TTF": 138, "term_freq": 1, "жетоны": [{ "позиция": 26, "start_offset": 158, "end_offset": 163}]}, "автобус": { "doc_freq": 531, "TTF": 556, "term_freq": 1, "жетоны": [{ "позиция": 31, "start_offset": 197, "end_offset": 200}]}, "пещеры": { "doc_freq": 217 6, "TTF": 2300, "term_freq": 1, "жетоны": [{ "позиция": 10, "start_offset": 59, "end_offset": 63}]}, "chambr": { "doc_freq": 5087, "TTF": 6194, "term_freq": 2, "жетоны": [{ "позиция": 9, "start_offset": 51, "end_offset": 58}, { "позиция": 19, "start_offset": 109, "end_offset": 116}]}, "монета": { "doc_freq": 3385, "TTF": 3765, "term_freq": 2, "жетоны": [{ "позиция": 4, "start_offset": 24, "end_offset": 28}, { "позиция": 12, "start_offset": 70, "end_offset": 74}]}, "Comerc": { "doc_freq": 3226, "TTF": 3265, "term_freq ": 1," жетоны ": [{" позиция ": 29," start_offset ": 182," end_offset ": 190}]}," cuisin ": {" doc_freq ": 8241," TTF ": 8537," term_freq ": 2," жетоны ": [{" позиция ": 5," start_offset ": 29," end_offset ": 36}, {" позиция ": 13," start_offset ": 75," end_offset ": 82}]} , "дон": { "doc_freq": 20, "TTF": 20, "term_freq": 1, "жетоны": [{ "позиция": 23, "start_offset": 139, "end_offset": 145}]} , "DOUBL": { "doc_freq": 1299, "TTF": 1417, "term_freq": 1, "жетоны": [{ "позиция": 20, "start_offset": 117, "end_offset": 123}]} , "douch": { "doc_freq": 3687, "TTF": 3854, "term_freq": 2, "жетоны": [{ "позиция": 7, "start_offset" : 41, "end_offset": 47}, { "позиция": 16, "start_offset": 94, "end_offset": 100}]}, "ENTR": { "doc_freq": 3343, "TTF": 3540,» term_freq ": 1," жетоны ": [{" позиция ": 21," start_offset ": 124," end_offset ": 130}]}," экспо ": {" doc_freq ": 608," TTF ": 618," term_freq ": 1," жетоны ": [{" позиция ": 27," start_offset ": 164," end_offset ": 174}]}," Lile ": {" doc_freq ": 9535," TTF ": 13834," term_freq ": 1," жетоны ": [{" позиция ": 2," start_offset ": 12," end_offset ": 17}]}," расположение ": {" doc_freq ": 3054," TTF ": 3387," term_freq ": 1," жетоны ": [{" позиция ": 25," start_offset ": 149," end_offset ": 157}]}," B & B ": {" doc_freq ": 2032," TTF ": 3087," term_freq ": 1," жетоны ": [{" позиция ": 0," start_offset ": 0," end_offset ": 6}]}," метро ": {" doc_freq ": 4695," TTF ": 4928," term_freq ": 1," жетоны ": [{" позиция ": 30," start_offset ": 191," end_offset ": 196}]}," pouvant ": {" doc_freq ": 84," TTF ": 91," term_freq ": 1," жетоны ": [{" позиция ": 22," start_offset ": 131," end_offset ": 138}]}," проч ": {" doc_freq ": 2566," TTF ": 2754," term_freq ": 1," жетоны ": [{" позиция ": 28," start_offset ": 175," end_offset ": 181}]}," RDC ": {" doc_freq ": 457," TTF ": 464," term_freq ": 1," жетоны ": [{" позиция ": 3," start_offset ": 18," end_offset ": 21}]}," SDB ": {" doc_freq ": 1008," TTF ": 1019," term_freq ": 2," жетоны ": [{" позиция ": 6," start_offset ": 37," end_offset ": 40}, {" позиция ": 15," start_offset ": 90," end_offset ": 93}]}," sejou ": {" doc_freq ": 5837," TTF ": 5993," term_freq ": 1," жетоны ": [{" позиция ": 14," start_offset ": 83," end_offset ": 89}]}," туалет ": {" doc_freq ": 5543," TTF ": 5706," term_freq ": 2," жетоны ": [{" позиция ": 8," start_offset ": 48," end_offset ": 50}, {" позиция ": 17," start_offset ": 101," end_offset ": 103}]}}}}}

мне не удастся разобрать его в JSON может помочь меня?

+0

Как вы его разобрали? – duffy356

+5

Вы пробовали библиотеки JSON, такие как Джексон? Они делают весь тяжелый подъем, в котором вы нуждаетесь. –

+0

какая часть JSON вам нужна? Все или только процент? И, пожалуйста, уточните, что означает «поле, которое может измениться, и размер» – Marged

ответ

2

Мой лучший опыт в области сопоставления - com.fasterxml.джексон

использование сделать JSon строки из вашего класса (независимо от подклассов, до тех пор, как все они имеют соответствующие методы получения и установки, а также пустой (общественный) конструктор)

public String toJson() { 
    final ObjectMapper objectMapper = new ObjectMapper(); 
    objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); 
    StringWriter stringEmp = new StringWriter(); 
    try { 
     objectMapper.writeValue(stringEmp, this); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return stringEmp.toString(); 
} 

использование

public static ThisClass initFromJson(final String json) { 
    final ObjectMapper mapper = new ObjectMapper(); 
    ThisClass item; 
    try { 
     item = mapper.readValue(json, ThisClass.class); 
    } catch (IOException e) { 
     return null; 
    } 

    return item; 
} 

загрузить класс из JSon строк

Если у вас есть объект JSON и не имеют поля Java для этого, вы можете попробовать http://timboudreau.com/blog/json/read в генерировать код Java.

+0

Вам не кажется, что ему нужно перейти с JSON на объект Java? – Marged

+0

@Marged да, я делаю, вот для чего второй способ. Первый - наоборот. Но когда вы отправляете JSON.toString(), Objectmapper сопоставляет его классу Java – Danielson

+0

. Но вам нужно определить этот класс, поэтому это означало бы, что он должен создать такой класс заранее. Поскольку я понимаю его проблему, он получает JSON и не создает его самостоятельно, поэтому нет соответствующего объекта. – Marged

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