从 LinkedHashMap 读取不同类型的值

问题描述 投票:0回答:0
{
    "System": "PROD",
    "Procedure": "Test_Procedure",
    "payload": {
        "IV_SITEID": "JG",
        "IV_DATE": "12.03.2019",
        "IV_STRUCT": {
            "FIELD1": "VALUE1",
            "FIELD2": "VALUE2",
            "FIELD3": "VALUE3"
        },
        "IV_TABLE": [
            {
                "TAB1": "VAL1",
                "TAB2": "VAL2",
                "TAB3": "VAL3"
            },
            {
                "TAB1": "VAL11",
                "TAB2": "VAL12",
                "TAB3": "VAL13"
            },
            {
                "TAB1": "VAL21",
                "TAB2": "VAL22",
                "TAB3": "VAL23"
            }
        ]
    }
}

我将以上述 json 格式从用户那里获得可能的输入。我在 java 的 LinkedHashMap 中使用它

我想检查上面输入的“payload”标签值是简单字符串、单个 json 数组还是多个数组值

public ResponseEntity<?> callRFC(@RequestBody Map<String, Object> request, @RequestHeader HttpHeaders headers) {
        
        String sapSystem = (String) request.get("sapSystem");
        String rfc = (String) request.get("rfc");
        LinkedHashMap payload = (LinkedHashMap) request.get("payload");
                
        for (int i=0; i<payload.values().toArray().length; i++)
            {
                System.out.println("Values : " + payload.values().toArray()[i]);
            }
            
        return ResponseEntity.ok().build();
    }   

输出:

Values : JG
Values : 12.05.2019
Values : {FIELD1=VALUE1, FIELD2=VALUE2, FIELD3=VALUE3}
Values : [{TAB1=VAL1, TAB2=VAL2, TAB3=VAL3}, {TAB1=VAL11, TAB2=VAL12, TAB3=VAL13}, {TAB1=VAL21, TAB2=VAL22, TAB3=VAL23}]

我可以从上面的代码打印值,但我无法检查 payload.values().toArray()[i] 的值是简单字符串、单个 json 数组还是多个数组值

java spring-boot linkedhashmap
© www.soinside.com 2019 - 2024. All rights reserved.