gson JAVA如何将JSONObject转换成自定义格式?

2nbm6dog  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(166)

我正在尝试做的是将某个JSON文件更改为自定义格式,我已经搜索了两天的信息,但我还没有弄清楚,我没有人问这个....

格式化前

  1. {
  2. "book": [
  3. {
  4. "id": "01",
  5. "language": "Java",
  6. "edition": "third",
  7. "author": "Herbert Schildt"
  8. },
  9. {
  10. "id": "07",
  11. "language": "C++",
  12. "edition": "second",
  13. "author": "E.Balagurusamy"
  14. }
  15. ]
  16. }

正在尝试将其格式化为:

  1. Book
  2. Id : 01
  3. Language : Java
  4. ...
  5. Id : 07
  6. Language : C++

实际的JSON数据如下所示:

  1. [
  2. {
  3. "symbol": "BTC",
  4. "circulating_supply": 18729837,
  5. "last_updated": "2021-06-08T10:17:02.000Z",
  6. "total_supply": 18729837,
  7. "cmc_rank": 1,
  8. "platform": null,
  9. "tags": [
  10. "mineable",
  11. "pow",
  12. "sha-256",
  13. "store-of-value",
  14. "state-channels",
  15. "coinbase-ventures-portfolio",
  16. "three-arrows-capital-portfolio",
  17. "polychain-capital-portfolio",
  18. "binance-labs-portfolio",
  19. "arrington-xrp-capital",
  20. "blockchain-capital-portfolio",
  21. "boostvc-portfolio",
  22. "cms-holdings-portfolio",
  23. "dcg-portfolio",
  24. "dragonfly-capital-portfolio",
  25. "electric-capital-portfolio",
  26. "fabric-ventures-portfolio",
  27. "framework-ventures",
  28. "galaxy-digital-portfolio",
  29. "huobi-capital",
  30. "alameda-research-portfolio",
  31. "a16z-portfolio",
  32. "1confirmation-portfolio",
  33. "winklevoss-capital",
  34. "usv-portfolio",
  35. "placeholder-ventures-portfolio",
  36. "pantera-capital-portfolio",
  37. "multicoin-capital-portfolio",
  38. "paradigm-xzy-screener"
  39. ],
  40. "date_added": "2013-04-28T00:00:00.000Z",
  41. "quote": {"USD": {
  42. "percent_change_30d": -42.63012856,
  43. "percent_change_1h": 0.38317977,
  44. "last_updated": "2021-06-08T10:17:02.000Z",
  45. "percent_change_24h": -9.36685756,
  46. "market_cap": 619325019564.578,
  47. "price": 33066.22580669431,
  48. "percent_change_60d": -43.54639481,
  49. "volume_24h": 43132365330.36409,
  50. "percent_change_90d": -39.86303315,
  51. "percent_change_7d": -9.21607228
  52. }},
  53. "num_market_pairs": 9722,
  54. "name": "Bitcoin",
  55. "max_supply": 21000000,
  56. "id": 1,
  57. "slug": "bitcoin"
  58. },
  59. {
  60. "symbol": "ETH",
  61. "circulating_supply": 116205430.624,
  62. "last_updated": "2021-06-08T10:17:02.000Z",
  63. "total_supply": 116205430.624,
  64. "cmc_rank": 2,
  65. "platform": null,
  66. "tags": [
  67. "mineable",
  68. "pow",
  69. "smart-contracts",
  70. "ethereum",
  71. "coinbase-ventures-portfolio",
  72. "three-arrows-capital-portfolio",
  73. "polychain-capital-portfolio",
  74. "binance-labs-portfolio",
  75. "arrington-xrp-capital",
  76. "blockchain-capital-portfolio",
  77. "boostvc-portfolio",
  78. "cms-holdings-portfolio",
  79. "dcg-portfolio",
  80. "dragonfly-capital-portfolio",
  81. "electric-capital-portfolio",
  82. "fabric-ventures-portfolio",
  83. "framework-ventures",
  84. "hashkey-capital-portfolio",
  85. "kinetic-capital",
  86. "huobi-capital",
  87. "alameda-research-portfolio",
  88. "a16z-portfolio",
  89. "1confirmation-portfolio",
  90. "winklevoss-capital",
  91. "usv-portfolio",
  92. "placeholder-ventures-portfolio",
  93. "pantera-capital-portfolio",
  94. "multicoin-capital-portfolio",
  95. "paradigm-xzy-screener"
  96. ],
  97. "date_added": "2015-08-07T00:00:00.000Z",
  98. "quote": {"USD": {
  99. "percent_change_30d": -34.93326351,
  100. "percent_change_1h": 0.0977492,
  101. "last_updated": "2021-06-08T10:17:02.000Z",
  102. "percent_change_24h": -10.67415695,
  103. "market_cap": 292465567141.6079,
  104. "price": 2516.797756964766,
  105. "percent_change_60d": 20.00514111,
  106. "volume_24h": 38463882117.94565,
  107. "percent_change_90d": 37.73403958,
  108. "percent_change_7d": -3.05561192
  109. }},
  110. "num_market_pairs": 6053,
  111. "name": "Ethereum",
  112. "max_supply": null,
  113. "id": 1027,
  114. "slug": "ethereum"
  115. },
  116. {
  117. "symbol": "USDT",
  118. "circulating_supply": 62280355385.45168,
  119. "last_updated": "2021-06-08T10:16:08.000Z",
  120. "total_supply": 64471767616.826355,
  121. "cmc_rank": 3,
  122. "platform": {
  123. "symbol": "ETH",
  124. "name": "Ethereum",
  125. "token_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
  126. "id": 1027,
  127. "slug": "ethereum"
  128. },
  129. "tags": [
  130. "store-of-value",
  131. "payments",
  132. "stablecoin",
  133. "stablecoin-asset-backed",
  134. "solana-ecosystem"
  135. ],
  136. "date_added": "2015-02-25T00:00:00.000Z",
  137. "quote": {"USD": {
  138. "percent_change_30d": 0.08689942,
  139. "percent_change_1h": -0.01514305,
  140. "last_updated": "2021-06-08T10:16:08.000Z",
  141. "percent_change_24h": 0.00252658,
  142. "market_cap": 62333503909.90704,
  143. "price": 1.00085337542033,
  144. "percent_change_60d": 0.00890571,
  145. "volume_24h": 88090197454.22122,
  146. "percent_change_90d": 0.02421796,
  147. "percent_change_7d": 0.03190558
  148. }},
  149. "num_market_pairs": 13483,
  150. "name": "Tether",
  151. "max_supply": null,
  152. "id": 825,
  153. "slug": "tether"
  154. },
  155. {
  156. "symbol": "BNB",
  157. "circulating_supply": 153432897,
  158. "last_updated": "2021-06-08T10:17:08.000Z",
  159. "total_supply": 169432897,
  160. "cmc_rank": 4,
  161. "platform": null,
  162. "tags": [
  163. "marketplace",
  164. "centralized-exchange",
  165. "payments",
  166. "binance-smart-chain",
  167. "alameda-research-portfolio",
  168. "multicoin-capital-portfolio"
  169. ],
  170. "date_added": "2017-07-25T00:00:00.000Z",
  171. "quote": {"USD": {
  172. "percent_change_30d": -46.98637267,
  173. "percent_change_1h": -0.06201527,
  174. "last_updated": "2021-06-08T10:17:08.000Z",
  175. "percent_change_24h": -12.9766759,
  176. "market_cap": 54032968135.19999,
  177. "price": 352.1602550149333,
  178. "percent_change_60d": -18.72766515,
  179. "volume_24h": 3975040241.706507,
  180. "percent_change_90d": 24.3131346,
  181. "percent_change_7d": 0.46465171
  182. }},
  183. "num_market_pairs": 619,
  184. "name": "Binance Coin",
  185. "max_supply": 170532785,
  186. "id": 1839,
  187. "slug": "binance-coin"
  188. },
  189. {
  190. "symbol": "ADA",
  191. "circulating_supply": 31930548128.29,
  192. "last_updated": "2021-06-08T10:16:09.000Z",
  193. "total_supply": 32681678108.601,
  194. "cmc_rank": 5,
  195. "platform": null,
  196. "tags": [
  197. "mineable",
  198. "dpos",
  199. "pos",
  200. "platform",
  201. "research",
  202. "smart-contracts",
  203. "staking",
  204. "binance-chain"
  205. ],
  206. "date_added": "2017-10-01T00:00:00.000Z",
  207. "quote": {"USD": {
  208. "percent_change_30d": -9.47981292,
  209. "percent_change_1h": -1.0109768,
  210. "last_updated": "2021-06-08T10:16:09.000Z",
  211. "percent_change_24h": -10.68780802,
  212. "market_cap": 49082262157.72255,
  213. "price": 1.53715689315826,
  214. "percent_change_60d": 26.8779134,
  215. "volume_24h": 3602351530.9447293,
  216. "percent_change_90d": 31.00161031,
  217. "percent_change_7d": -9.66192067
  218. }},
  219. "num_market_pairs": 276,
  220. "name": "Cardano",
  221. "max_supply": 45000000000,
  222. "id": 2010,
  223. "slug": "cardano"
  224. },
  225. {
  226. "symbol": "DOGE",
  227. "circulating_supply": 129939361256.40326,
  228. "last_updated": "2021-06-08T10:17:03.000Z",
  229. "total_supply": 129939361256.40326,
  230. "cmc_rank": 6,
  231. "platform": null,
  232. "tags": [
  233. "mineable",
  234. "pow",
  235. "scrypt",
  236. "medium-of-exchange",
  237. "memes",
  238. "payments"
  239. ],
  240. "date_added": "2013-12-15T00:00:00.000Z",
  241. "quote": {"USD": {
  242. "percent_change_30d": -27.85005369,
  243. "percent_change_1h": -0.39664229,
  244. "last_updated": "2021-06-08T10:17:03.000Z",
  245. "percent_change_24h": -12.06689716,
  246. "market_cap": 42746878864.849754,
  247. "price": 0.32897559639761,
  248. "percent_change_60d": 425.01053128,
  249. "volume_24h": 4256466078.3377676,
  250. "percent_change_90d": 479.75690549,
  251. "percent_change_7d": 1.48509162
  252. }},
  253. "num_market_pairs": 376,
  254. "name": "Dogecoin",
  255. "max_supply": null,
  256. "id": 74,
  257. "slug": "dogecoin"
  258. },
  259. {
  260. "symbol": "XRP",
  261. "circulating_supply": 46151013329,
  262. "last_updated": "2021-06-08T10:17:03.000Z",
  263. "total_supply": 99990399027,
  264. "cmc_rank": 7,
  265. "platform": null,
  266. "tags": [
  267. "medium-of-exchange",
  268. "enterprise-solutions",
  269. "binance-chain",
  270. "arrington-xrp-capital",
  271. "galaxy-digital-portfolio",
  272. "a16z-portfolio",
  273. "pantera-capital-portfolio"
  274. ],
  275. "date_added": "2013-08-04T00:00:00.000Z",
  276. "quote": {"USD": {
  277. "percent_change_30d": -42.92640139,
  278. "percent_change_1h": -0.60106842,
  279. "last_updated": "2021-06-08T10:17:03.000Z",
  280. "percent_change_24h": -10.12249253,
  281. "market_cap": 39897934998.12378,
  282. "price": 0.8645083199734,
  283. "percent_change_60d": -15.63161843,
  284. "volume_24h": 4179902561.947919,
  285. "percent_change_90d": 84.29141004,
  286. "percent_change_7d": -14.85218801
  287. }},
  288. "num_market_pairs": 682,
  289. "name": "XRP",
  290. "max_supply": 100000000000,
  291. "id": 52,
  292. "slug": "xrp"
  293. },
  294. {
  295. "symbol": "USDC",
  296. "circulating_supply": 23075185630.71199,
  297. "last_updated": "2021-06-08T10:17:04.000Z",
  298. "total_supply": 23075185630.71199,
  299. "cmc_rank": 8,
  300. "platform": {
  301. "symbol": "ETH",
  302. "name": "Ethereum",
  303. "token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
  304. "id": 1027,
  305. "slug": "ethereum"
  306. },
  307. "tags": [
  308. "medium-of-exchange",
  309. "stablecoin",
  310. "stablecoin-asset-backed"
  311. ],
  312. "date_added": "2018-10-08T00:00:00.000Z",
  313. "quote": {"USD": {
  314. "percent_change_30d": 0.05408204,
  315. "percent_change_1h": -0.00816775,
  316. "last_updated": "2021-06-08T10:17:04.000Z",
  317. "percent_change_24h": 0.00649147,
  318. "market_cap": 23084217521.810787,
  319. "price": 1.00039141141672,
  320. "percent_change_60d": -0.05832072,
  321. "volume_24h": 2455031484.812885,
  322. "percent_change_90d": 0.02446002,
  323. "percent_change_7d": -0.0056865
  324. }},
  325. "num_market_pairs": 1068,
  326. "name": "USD Coin",
  327. "max_supply": null,
  328. "id": 3408,
  329. "slug": "usd-coin"
  330. },
  331. {
  332. "symbol": "DOT",
  333. "circulating_supply": 945735752.6497443,
  334. "last_updated": "2021-06-08T10:17:05.000Z",
  335. "total_supply": 1081259867.5039322,
  336. "cmc_rank": 9,
  337. "platform": null,
  338. "tags": [
  339. "substrate",
  340. "polkadot",
  341. "binance-chain",
  342. "polkadot-ecosystem",
  343. "three-arrows-capital-portfolio",
  344. "polychain-capital-portfolio",
  345. "blockchain-capital-portfolio",
  346. "boostvc-portfolio",
  347. "cms-holdings-portfolio",
  348. "coinfund-portfolio",
  349. "fabric-ventures-portfolio",
  350. "fenbushi-capital-portfolio",
  351. "hashkey-capital-portfolio",
  352. "kinetic-capital",
  353. "1confirmation-portfolio",
  354. "placeholder-ventures-portfolio",
  355. "pantera-capital-portfolio",
  356. "exnetwork-capital-portfolio"
  357. ],
  358. "date_added": "2020-08-19T00:00:00.000Z",
  359. "quote": {"USD": {
  360. "percent_change_30d": -45.72649058,
  361. "percent_change_1h": -0.3486271,
  362. "last_updated": "2021-06-08T10:17:05.000Z",
  363. "percent_change_24h": -15.05195784,
  364. "market_cap": 20076748179.497543,
  365. "price": 21.22870804370766,
  366. "percent_change_60d": -48.77804479,
  367. "volume_24h": 2421158822.0532265,
  368. "percent_change_90d": -44.73258504,
  369. "percent_change_7d": -5.5027651
  370. }},
  371. "num_market_pairs": 202,
  372. "name": "Polkadot",
  373. "max_supply": null,
  374. "id": 6636,
  375. "slug": "polkadot-new"
  376. },
  377. {
  378. "symbol": "UNI",
  379. "circulating_supply": 575107764.052485,
  380. "last_updated": "2021-06-08T10:16:11.000Z",
  381. "total_supply": 1000000000,
  382. "cmc_rank": 10,
  383. "platform": {
  384. "symbol": "ETH",
  385. "name": "Ethereum",
  386. "token_address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
  387. "id": 1027,
  388. "slug": "ethereum"
  389. },
  390. "tags": [
  391. "decentralized-exchange",
  392. "defi",
  393. "dao",
  394. "yield-farming",
  395. "amm",
  396. "coinbase-ventures-portfolio",
  397. "three-arrows-capital-portfolio",
  398. "governance",
  399. "blockchain-capital-portfolio",
  400. "defiance-capital",
  401. "alameda-research-portfolio",
  402. "a16z-portfolio",
  403. "pantera-capital-portfolio",
  404. "parafi-capital",
  405. "paradigm-xzy-screener"
  406. ],
  407. "date_added": "2020-09-17T00:00:00.000Z",
  408. "quote": {"USD": {
  409. "percent_change_30d": -40.90238231,
  410. "percent_change_1h": -0.57439386,
  411. "last_updated": "2021-06-08T10:16:11.000Z",
  412. "percent_change_24h": -11.84522167,
  413. "market_cap": 13448377375.304375,
  414. "price": 23.38409984337659,
  415. "percent_change_60d": -23.21587997,
  416. "volume_24h": 569769688.2472888,
  417. "percent_change_90d": -26.98611642,
  418. "percent_change_7d": -13.63660968
  419. }},
  420. "num_market_pairs": 270,
  421. "name": "Uniswap",
  422. "max_supply": 1000000000,
  423. "id": 7083,
  424. "slug": "uniswap"
  425. },
  426. {
  427. "symbol": "ICP",
  428. "circulating_supply": 124103517.19,
  429. "last_updated": "2021-06-08T10:17:07.000Z",
  430. "total_supply": 469293126.8967923,
  431. "cmc_rank": 11,
  432. "platform": null,
  433. "tags": [
  434. "platform",
  435. "distributed-computing",
  436. "polychain-capital-portfolio",
  437. "exnetwork-capital-portfolio"
  438. ],
  439. "date_added": "2021-03-23T00:00:00.000Z",
  440. "quote": {"USD": {
  441. "percent_change_30d": 0,
  442. "percent_change_1h": -0.08952838,
  443. "last_updated": "2021-06-08T10:17:07.000Z",
  444. "percent_change_24h": -15.3124386,
  445. "market_cap": 10992912823.823347,
  446. "price": 88.57857595601757,
  447. "percent_change_60d": 0,
  448. "volume_24h": 260287850.43941185,
  449. "percent_change_90d": 0,
  450. "percent_change_7d": -20.06340267
  451. }},
  452. "num_market_pairs": 33,
  453. "name": "Internet Computer",
  454. "max_supply": null,
  455. "id": 8916,
  456. "slug": "internet-computer"
  457. },
  458. ... and so on
  459. ]

到目前为止,我一直在尝试将JSONObject转换为HashMap:

  1. HashMap<String, Object> rs = new ObjectMapper().readValue(json.toString(), HashMap.class);

但我真的不知道现在该怎么办...
有人告诉我使用Jackson或GSon或嵌套的HashMap,但我不知道它将如何解决这个问题...
有人能帮我吗?提前谢谢..!

icnyk63a

icnyk63a1#

不要使用HashMap。创建真实的数据类:

  1. public class Library {
  2. private Book[] book = { };
  3. public Book[] getBook() {
  4. return book;
  5. }
  6. public void setBook(Book[] books) {
  7. this.book = books;
  8. }
  9. }
  10. public class Book {
  11. private String id;
  12. private String language;
  13. private String edition;
  14. private String author;
  15. public String getId() {
  16. return id;
  17. }
  18. public void setId(String id) {
  19. this.id = id;
  20. }
  21. public String getLanguage() {
  22. return language;
  23. }
  24. public void setLanguage(String language) {
  25. this.language = language;
  26. }
  27. public String getEdition() {
  28. return edition;
  29. }
  30. public void setEdition(String edition) {
  31. this.edition = edition;
  32. }
  33. public String getAuthor() {
  34. return author;
  35. }
  36. public void setAuthor(String author) {
  37. this.author = author;
  38. }
  39. }

现在,您可以传递Library.class而不是HashMap.class。

展开查看全部

相关问题