java 获取Json中的某一个节点

Json数据 如下代码

{
    "Body": {
        "GetUserOrgPostResponse": {
            "GetUserOrgPostResult": {
                "NewDataSet": {
                    "@rowCount": "1234",
                    "ds": {
                        "Organization_FK": "6565",
                        "Organization_Dept_FK": "768786",
                        "Post_FK": "Pos11112222333",
                        "UserPostOID": "SPA2020656564",
                        "IsMaster": "true",
                        "User_FK": "USR45643543543435",
                        "IsVirtual": "false"
                    }
                }
            }
        }
    }
}

maven 的 xml

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
        </dependency>


       <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>


       <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

实体对象


import lombok.Data;

/**
 * @author Cheng JiYe
 * @description: 员工岗位DTO
 * @date 2021/8/12 14:20
 */
@Data
public class BliuOaUserPostDto {
    private String UserPostOID;

    private String Organization_FK;

    private String Organization_Dept_FK;

    private String Post_FK;

    private String User_FK;

    private String IsMaster;

    private String IsVirtual;
}

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cjy.webservices.blue.test.BliuOaUserPostDto;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;


/**
 * @author Cheng JiYe
 * @description: json遍历工具类
 * @date 2021/9/10 17:40
 */
public class JsonObjectUtils {



    @Test
    public void test1() {
        String jsonString = "{\n" +
                "    \"Body\": {\n" +
                "        \"GetUserOrgPostResponse\": {\n" +
                "            \"GetUserOrgPostResult\": {\n" +
                "                \"NewDataSet\": {\n" +
                "                    \"@rowCount\": \"1234\",\n" +
                "                    \"ds\": {\n" +
                "                        \"Organization_FK\": \"6565\",\n" +
                "                        \"Organization_Dept_FK\": \"768786\",\n" +
                "                        \"Post_FK\": \"Pos11112222333\",\n" +
                "                        \"UserPostOID\": \"SPA2020656564\",\n" +
                "                        \"IsMaster\": \"true\",\n" +
                "                        \"User_FK\": \"USR45643543543435\",\n" +
                "                        \"IsVirtual\": \"false\"\n" +
                "                    }\n" +
                "                }\n" +
                "            }\n" +
                "        }\n" +
                "    }\n" +
                "}";
        JSONObject jsonObject = JSON.parseObject(jsonString);
        System.out.println("jsonObject是:" + jsonObject);
        BliuOaUserPostDto postDto = JsonObjectUtils.xmlToObjectOne("ds", jsonObject,     BliuOaUserPostDto.class);

    }



    /**
     * 获取Json 中某个节点的单个内容(实际是从Map中获取的)
     *
     * @param mapKey     Json中的某个节点
     * @param jsonObject Json对象
     * @param tClass     实体对象类型
     * @param <T>
     * @return
     */
    public static <T> T xmlToObjectOne(String mapKey, JSONObject jsonObject, Class<T> tClass) {
        Map<String, Object> map = JsonObjectUtils2.jsonLoop(jsonObject, new HashMap<>(100));
        Object object = map.get(mapKey);
        T javaObject = null;
        if (object instanceof JSONObject) {
            JSONObject jsonObjectSun = (JSONObject) object;
            javaObject = jsonObjectSun.toJavaObject(tClass);
        }
        return javaObject;
    }


    /**
     * 使用递归的方式,把Json中的每个节点放到Map中
     *
     * @param object
     * @param map
     * @return
     */
    public static Map<String, Object> jsonLoop(Object object, Map<String, Object> map) {
        if (object instanceof JSONObject) {
            JSONObject jsonObject = (JSONObject) object;
            for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
                String entryKey = entry.getKey();
                Object objValue = entry.getValue();
                map.put(entryKey, objValue);
                if (objValue instanceof JSONObject) {
                    JSONObject jsonObjectSun = (JSONObject) objValue;
                    if (jsonObjectSun.entrySet().size() >= 1) {
                        jsonLoop(objValue, map);
                    }
                }
            }
        }
        return map;
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值