java使用GSON解析长JSON
我正试图解析这样一个很长的JSON
{
"BlastOutput2": [
{
"report": {
"program": "blastn",
"version": "BLASTN 2.6.0+",
"reference": "Stephen F. Altschul, Thomas L. Madden, Alejandro A. Schäffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), \"Gapped BLAST and PSI-BLAST: a new generation of protein database search programs\", Nucleic Acids Res. 25:3389-3402.",
"search_target": {
"subjects": [
"Subject_1"
]
},
"params": {
"expect": 0.0001,
"sc_match": 1,
"sc_mismatch": -2,
"gap_open": 5,
"gap_extend": 2,
"filter": "F"
},
"results": {
"bl2seq": [
{
"query_id": "Query_1",
"query_title": "F1-125",
"query_len": 806,
"hits": [
{
"num": 1,
"description": [
{
"id": "gi|251831106|ref|NC_012920.1|",
"title": "gi|251831106|ref|NC_012920.1| Homo sapiens mitochondrion, complete genome"
}
],
"len": 16569,
"hsps": [
{
"num": 1,
"bit_score": 619.793,
"score": 322,
"evalue": 3.47859e-180,
"identity": 458,
"query_from": 57,
"query_to": 572,
"query_strand": "Plus",
"hit_from": 16060,
"hit_to": 16569,
"hit_strand": "Plus",
"align_len": 516,
"gaps": 6,
"qseq": "GTATTGACTCACCGCTTAACAACGGCAATGTATTTCGTACATTACTGCCAGCCACAAAGAAAGTTGTACAGTACCATAAATACTTGACTACCTGTAGTACATAAAAACTCAACCCACATCAAAACCCCAAAAGACGAGACAGAAAAGCAAGTTTTTCAATCAACCTTCAACTGTCACACATCAACTGCAACTCCAAAGCCACCCCTCACCCACTAGGATATCAACAAACCTACCCGCCCTTAACAGTACATAGCACATAAAGTCATTTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCCTTTTTTTTGTGGTCCCCTGACCACCATCCTCCGTGTTTTTTTTTTTTCTCGCACAAGAGTGCTACTCTCCTCGTTCTGGGCCCATAACACTTGGGGGTAGCTAAAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAGCCTAAATAGCCCACACGTTCCCCTTTTTATAAGACATCACGATG",
"hseq": "GTATTGACTCACCCATCAACAACCGCTATGTATTTCGTACATTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACTTGACCACCTGTAGTACATAAAAACCCAATCCACATCAAAACCCCCTCC--CCATGCTTACAAGCAAGTACAGCAATCAACCCTCAACTATCACACATCAACTGCAACTCCAAAGCCACCCCTCACCCACTAGGATACCAACAAACCTACCCACCCTTAACAGTACATAGTACATAAAGCCATTTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCCTCAGATAGG-GGTCCCTTGACCACCATCCTCCGTG--AAATCAATATCCCGCACAAGAGTGCTACTCTCCTCGCTCCGGGCCCATAACACTTGGGGGTAGCTAAAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAGCCTAAATAGCCCACACGTTCCCC-TTAAATAAGACATCACGATG",
"midline": "||||||||||||| | |||||| || |||||||||||||||||||||||||||| | ||| |||||| |||||||||||||||||| ||||||||||||||||||| ||| ||||||||||||||| | | | | |||||||| ||||||||| |||||| ||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||| ||||||||||||||||| |||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | | |||||| |||||||||||||||||| | | || |||||||||||||||||||||||| || ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| || ||||||||||||||||"
},
{
"num": 2,
"bit_score": 108.358,
"score": 56,
"evalue": 3.15269e-026,
"identity": 88,
"query_from": 573,
"query_to": 666,
"query_strand": "Plus",
"hit_from": 1,
"hit_to": 89,
"hit_strand": "Plus",
"align_len": 94,
"gaps": 5,
"qseq": "GATCACAGGTCTATCACCCTATTAAACCACTCACGGGGAGCTCTCCATGCATTTGGTATTTTTCGTCTGGGGGGGGTATGCACGCGATAACATT",
"hseq": "GATCACAGGTCTATCACCCTATTAA-CCACTCACGGG-AGCTCTCCATGCATTTGGTA-TTTTCGTCT--GGGGGGTATGCACGCGATAGCATT",
"midline": "||||||||||||||||||||||||| ||||||||||| |||||||||||||||||||| ||||||||| ||||||||||||||||||| ||||"
}
]
}
],
"stat": {
"hsp_len": 14,
"eff_space": 13111560,
"kappa": 0.620991117264206,
"lambda": 1.33270576282382,
"entropy": 1.12409184650114
}
}
]
}
}
}
]
}
我使用的是GSON,通过查看一些示例,一些人使用Class将所有内容定义到JSON文件中,但我不知道这是否是解决这个特殊情况的最佳方法,因为我只想从这个JSON中获得结果部分,有人能帮我吗
# 1 楼答案
不需要创建一堆类来解析复杂的JSON字符串。让我们将其解析为
HashMap
,然后遍历它以获得所需的内容这样,您就有了一个具有多个级别的
HashMap
,让我们使用递归方法迭代myMap
,以获得您想要的结果示例代码: