Java对Json数据解析

本文深入讲解了使用FastJSON解析区块链钱包中间件中的复杂JSON数据,包括数据结构的逐级解析和关键字段的提取,适用于Maven项目的JSON处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON数据解析

最近一直在做钱包中间件,对于区块链的数据进行解析,对Json数据的解析,加深了了解。

项目中使用Maven的依赖

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
<!--maven依赖 -->
<dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>1.2.9</version>
</dependency>

解析的Json例子如下:

{
    "actions": [
        {
            "global_action_seq": 22744511,
            "account_action_seq": 0,
            "block_num": 8690464,
            "block_time": "2018-09-05T07:31:36.500",
            "action_trace": {
                "receipt": {
                    "receiver": "jxseostest11",
                    "act_digest": "a65862407737e83a03d7bff8cda54dd429e1fefa59dd457fe339e2ec64b4ef65",
                    "global_sequence": 22744511,
                    "recv_sequence": 1,
                    "auth_sequence": [
                        [
                            "eosfaucet111",
                            4085895
                        ]
                    ],
                    "code_sequence": 2,
                    "abi_sequence": 2
                },
                "act": {
                    "account": "eosio.token",
                    "name": "transfer",
                    "authorization": [
                        {
                            "actor": "eosfaucet111",
                            "permission": "active"
                        }
                    ],
                    "data": {
                        "from": "eosfaucet111",
                        "to": "jxseostest11",
                        "quantity": "100.0000 EOS",
                        "memo": ""
                    },
                    "hex_data": "1042c80a69b330551042c62a63aa707f40420f000000000004454f530000000000"
                },
                "elapsed": 24,
                "cpu_usage": 0,
                "console": "",
                "total_cpu_usage": 0,
                "trx_id": "92b74efb82a38cf2991b68e17baf113ae3ad202298936094aa952e2f4d7c9553",
                "inline_traces": []
            }
        }
}

一般情况下,接受数据的是String类型,也就是可以刚开始拿到这些数据是String类型,进行一步步的解析。

 //String数据转换为Json(如果是Json数据无需进行这行代码)
 JSONObject returnJson = JSONObject.parseObject(return_str);
 //获取actions的一组数据
 JSONArray actionArray = returnJson.getJSONArray("actions");
 //对actions的一组数据进行解析
 for(int index = 0;index < actionArray.size();index++){
       //对每一个action进行解析
       JSONObject actionInfo = actionArray.getJSONObject(index);
       //获取数据
       String blockNum = actionInfo.getString("block_num");
       String blockTime = actionInfo.getString("block_time");
       String trxId = actionInfo.getString("trx_id");
       String actionTrace = actionInfo.getString("action_trace");
       //获取action_trace节点的数据
       JSONObject actionTraceJson = JSONObject.parseObject(actionTrace);
       //获取action_trace节点下的act的Json格式数据
       String act = actionTraceJson.getString("act");
       JSONObject actJson = JSONObject.parseObject(act);
       //获取act下面的Array
       JSONArray authorizationArray = actJson.getJSONArray("authorization");
       //获取authorizationArray下面的数据
       for(int aIndex = 1;aIndex < authorizationArray.size();aIndex++){
        	//对每一个authorization进行解析
        	JSONObject authorizationInfo = authorizationArray.getJSONObject(aIndex);
        	String actor = authorizationInfo.getString("actor");
            String permission = authorizationInfo.getString("permission");
        }
       //获取act的Json格式数据
        String account = actJson.getString("account");
        String name = actJson.getString("name");
        String data = actJson.getString("data");
        //获取data节点下面的数据
        JSONObject data_json = JSONObject.parseObject(data);
        String from = data_json.getString("from");
        String to = data_json.getString("to");
        String quantity = data_json.getString("quantity");
        String memo = data_json.getString("memo");
   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值