如何检查 JSON 节点是否短



我有一个json节点,我想检查它是否是一个数组。如果节点是数组,则每个值都应该是一个短值。因此,对于每个值,我正在使用isNumber(( API检查它是否是一个数字。但是我想知道这个数字是否是短的。怎么做?法典:

JsonNode attrNode = rootNode.path("product_id_anyof");
if ((attrNode.getNodeType() == JsonNodeType.ARRAY) { ///this part is working.
    for (final JsonNode node : attrNode) {
        if (!node.isShort()) { ///returns false even if the number is a short.
            return false;
        else 
            return true;
        }
    }
}

预期:如果给定 short,它应该返回 true,但它总是给出 false。

JSON number默认读取为int,尝试检查给定number值是否手动short

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeType;
public class Test {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        System.out.println(onlyShortsArray(mapper.readTree("[1,2,3,4]")));
        System.out.println(onlyShortsArray(mapper.readTree("[1,2,3, 33333]")));
        System.out.println(onlyShortsArray(mapper.readTree("[1,2,3, "a"]")));
    }
    private static boolean onlyShortsArray(JsonNode attrNode) {
        if (attrNode.getNodeType() == JsonNodeType.ARRAY) {
            for (final JsonNode node : attrNode) {
                if (node.isInt()) {
                    try {
                        Short.valueOf(node.asText());
                        continue;
                    } catch (NumberFormatException e) {
                        return false;
                    }
                }
                return false;
            }
            return true;
        }
        return false;
    }
}

相关内容

  • 没有找到相关文章

最新更新