【问题标题】:JsonString value to extract specific key [duplicate]提取特定键的JsonString值[重复]
【发布时间】:2021-07-21 08:27:03
【问题描述】:

规范:JARS 在 Java (JDK-15) 中使用 Jackson 进行 Json 解析/提取

语句:字符串 val1 = "[ {"UnitId":"106","CategoryId":"403","ProductId":"103 ","ProductName":"加州苹果","ProductWeight":"250"} ]";

问题:我需要从 Json 验证字符串中提取“ProductName”的值。

问题:我只需要使用 Jakson jar 库 来解析和提取。 我已经尝试使用 stackoverflow 上的 jackson 库的示例代码...没有用。

如果有人有示例代码可以尝试,请分享。

关于 卡提克

【问题讨论】:

    标签: java json jackson jackson-databind


    【解决方案1】:

    作为一个选项,如果您不想为此创建对象。你可以这样做:

        private static JsonMapper JSON_MAPPER = new JsonMapper();
    
        public static String parseProductId(String rawJson) {
        try {
            JsonNode root = JSON_MAPPER.readTree(rawJson);
            return root.get(0).get("ProductId").asText();
        } catch (JsonProcessingException e) {
            throw new IllegalArgumentException("Some information");
        }
    }
    

    在我看来,如果我们需要 1-2 个字段,这种方法提供了灵活性。

    【讨论】:

    • 此代码适用于原始 Json,不使用 pojo 或约束。谢谢同样的。
    【解决方案2】:

    您可以使用 Jackson 的 ObjectMapper 将您的 JSON 反序列化为 POJO。

    以下代码假定您有一个Product POJO,其中的字段与您的 JSON 中的字段相对应。请确保您的 POJO 中的字段使用 @JsonProperty 进行注释:

    public class Product {
        @JsonProperty("ProductName")
        private String productName;
        [...]
    

    然后您可以将 JSON 映射到一个数组中:

    Product[] products = objectMapper.readValue(val1, Product[].class);
    

    如果您更喜欢列表而不是数组,您可以按如下方式进行:

    List<Product> products = objectMapper.readValue(val1, new TypeReference<List<Product>>(){});
    

    【讨论】:

    • Bro ... 对不起,我不是使用 POJO 来获取数据,String 有时会更改 key:values,我需要获取此示例代码中指定键的值.
    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2017-08-22
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多