2015-06-24 17 views
0

我從URL中獲取了一個字符串,我知道它被格式化爲JSON,但我不知道可以更改的字段和大小。我嘗試將其解析爲JSON對象以便能夠對其進行迭代。字符串的樣子說:String在JSON中未知的Java

{ 「_index」: 「my_index」, 「_類型」: 「my_type」, 「_ ID」: 「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}]},的」 Maison 「:{」 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}]},」 proch 「:{」 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}]},」 WC 「:{」 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字符串(無論子類,只要所有有相應的getter和setter,和一個空的(公共)構造函數)

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

@已收集是的,我這樣做,這是第二種方法。第一個是相反的方向。但是,當您發送JSON.toString()時,Objectmapper將其映射到Java類 – Danielson

+0

但您需要定義該類,因此這意味着他必須事先創建這樣的類。據我瞭解他的問題,他收到了JSON,並沒有自己創建它,所以沒有相應的對象。 – Marged