当前位置: 首页 > 知识库问答 >
问题:

使用jackson wtih java将json字符串转换为pojo时如何处理空值或空值

邴俊达
2023-03-14

下面是我使用jackson转换为pojo的json响应-

{
    paymentType": [
        {
            "Monthly": ["Monthly", "Monthly"],
            "Prepaid": ["Prepaid", "Prepaid"]
        },
        ""
    ]
}

代码:

String rspString = "{\"paymentType\": [{\"Monthly\": [\"Monthly\",\"Monthly\"],\"Prepaid\": [\"Prepaid\",\"Prepaid\"]},\"\"]}";

JsonUtil jsonUtil = new JsonUtil();
PaymentTypeResponse PaymentTypeRsp = new PaymentTypeResponse();
PaymentTypeRsp = (PaymentTypeResponse) jsonUtil.Json2Object(rspString, PaymentTypeRsp);
System.out.println(PaymentTypeRsp.getPaymentType().size());

我收到以下例外:

线程“main”com . faster XML . Jackson . databind . jsonmappingexception中出现异常:无法从字符串值(“”)实例化类型为[simple type,class com . test . sample . paymenttyperpons]的值;没有单字符串构造函数/工厂方法

响应中有一个空白值,如何在转换为pojo时处理这些值?

同样,如果null存在,如何处理这种情况?

任何指示将不胜感激。

提前谢谢。

这个类是这样的:

public class PaymentType 
{
    @JsonProperty("Monthly")
    public List<String> monthly;
    @JsonProperty("Prepaid")
    public List<String> prepaid;

     //getter and setters
}

public PaymentTypeResponse 
{
    @JsonProperty("paymentType")
    public List<PaymentType> paymentType;

    //setters and Getters
}

共有2个答案

公良信然
2023-03-14

根据pojo类,您的json不正确。在您的json中,“paymentType”数组中的第三个元素是一个空字符串,它应该是一个数组或为空。

从这里更改您的 json -

{
    "paymentType": [{
        "Monthly": ["Monthly", "Monthly"],
        "Prepaid": ["Prepaid", "Prepaid"]
    }, ""]
}

到这个-

{
    "paymentType": [{
        "Monthly": ["Monthly", "Monthly"],
        "Prepaid": ["Prepaid", "Prepaid"]
    }]
}

Json 字符串 -

 String rspString = "{\"paymentType\": [{\"Monthly\": [\"Monthly\",\"Monthly\"],\"Prepaid\": [\"Prepaid\",\"Prepaid\"]},null]}";

或者这个——

{
    "paymentType": [{
        "Monthly": ["Monthly", "Monthly"],
        "Prepaid": ["Prepaid", "Prepaid"]
    }, null]
}

Json 字符串 -

String rspString = "{\"paymentType\": [{\"Monthly\": [\"Monthly\",\"Monthly\"],\"Prepaid\": [\"Prepaid\",\"Prepaid\"]}]}";
乐钱青
2023-03-14

如果您只收到null或空字符串,而不是正确表示您的PaymentType类的JSON对象,那么在ObjectMapper中设置以下反序列化功能就足够了:

mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

现在,空字符串将被强制为null,您将不再有这个问题。

更通用的方法(虽然处理起来更复杂)是将接受String参数的构造函数添加到PaymentTypeclass:

public PaymentType() {
}

public PaymentType(String json) {
    // parse the json string here and initialize members
}

在接收 String 参数的构造函数中,可以根据需要分析字符串。

注意,您还需要添加无参数构造函数,以便Jackson可以从有效的JSON反序列化。

 类似资料:
  • 我正在使用jackson将jason响应转换为pojo列表。下面是我得到的响应。 我正在将其转换为Pojo列表。下面是我的波乔。 一切正常。但是我想删除要转换为pojo的值,该值的代码为空值。即“代码”:”或“代码”:空 我正在使用下面的杰克逊代码将json转换为pojo。 使用下面的代码让json反对。 任何指示将不胜感激。 提前感谢。

  • 问题内容: 我需要将INT数据类型的列ID转换为空字符串[‘’]。我不应该修改源列的数据类型,而需要在另一个表的转换中对其进行转换。ID列为“ nullable”,因为其中包含null。这是我的代码。 这将返回: 当我修改我的CASE语句时,它如下: 它返回: 问题答案: 这是你想要的吗? 您必须将整个结果列变成单个列。如果要使用空白值,则类型为某种字符串。 在您的示例中,意味着的结果是整数,这就

  • 我想将以下字符串转换为对象: 要将其转换为对象,我创建了以下类: 我使用Jackson库转换到。以下是我如何使用杰克逊转换: 问题是,在转换上面的中User对象始终是空的。我做错了什么? 提前谢谢。

  • 问题内容: 我有以下字符串: 如何使用Google / GSON将其转换为Java POJO? 问题答案: 通过使用http://www.jsonschema2pojo.org/或通过在Studio中添加插件(https://github.com/Hexara/Json2Pojo)生成POJO 现在添加依赖项: 将您的json或字符串转换为POJO

  • 我正在使用以下方法将resultset转换为JSON,并试图根据下面描述的场景找出如何处理值: 当我在Oracle SQL developer中运行以下SQL查询(在下面的代码中使用)时: 中选择SQLQUERY,得到以下结果: 如上所述,对于由上述SQL查询返回的上述数据,下面的Java代码将其转换为以下JSON: 因此,基本上,它没有在上面的雇员计数的JSON响应中显示列名,因为它是。如何确保

  • 问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段: