当前位置: 首页 > 面试题库 >

如何使用Jackson获得纯文本形式的JSON部分

颛孙正卿
2023-03-14
问题内容

我从API获得以下JSON:

    "hotel_data": {
        "name": "Hotel Name",
        "checkin_checkout_times": {
            "checkin_from": "14:00",
            "checkin_to": "00:00",
            "checkout_from": "",
            "checkout_to": "12:00"
        },
        "default_language": "en",
        "country": "us",
        "currency": "USD",
        "city": "Miami"
    }

我正在使用Jackson库将此JSON反序列化为Java对象。我不想为checkin_checkout_times对象创建一个特殊的类。我只是想以纯文本形式获得它。这样"checkin_from": "14:00", "checkin_to": "00:00", "checkout_from": "", "checkout_to": "12:00"

在我的POJO中,hotel_datacheckin_checkout_times应该作为字符串,即:

    @JsonProperty("checkin_checkout_times")
    private String checkinCheckoutTimes

是否可以将JSON的此部分作为纯文本获取?

编辑: 我得到的错误com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.String out of START_OBJECT token at [Source: (String)...


问题答案:

利用JsonNode

只需在POJO中为该setter字段输入以下内容,它便会为您工作。checkinCheckoutTimes``hotel_data

public void setCheckinCheckoutTimes(JsonNode node) {
    this.checkinCheckoutTimes = node.toString();
}
String str = "{ \"id\": 1, \"data\": { \"a\": 1 } }";
try {
    System.out.println(new ObjectMapper().readValue(str,Employee.class));
} catch (IOException e) {
    e.printStackTrace();
}

Employee如下:

class Employee
{
    private int id;
    private String data;

    public Employee() {
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public String getData() {
        return data;
    }

    public void setData(JsonNode node) {
        this.data = node.toString();
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", data='" + data + '\'' +
                '}';
    }
}

给出以下输出:

Employee{id=1, data='{"a":1}'}


 类似资料:
  • 我有这个Spring Rest APIendpoint: XML模型。 但没有任何内容打印到控制台中。知道我错在哪里吗?可能这个组件没有注册?

  • Spring4.1实例化了Jackson实例。我有理由将该实例放入我的一个控制器中:该控制器使用Jackson进行一些小的JSON解析,但是它使用的应该是Spring本身使用的同一个实例。我该怎么做呢? 注意,我不是在问如何自定义配置Spring使用的;我对默认值很满意。我只想检索Spring out使用的实例,这样我就可以在自己的代码中重用现有的实例。

  • 问题内容: 对于本地Apache服务器(与Ubuntu一起运行)上的某个文件夹,我希望所有* php文件都将显示为好像纯文本文件一样。我需要这个,因为我只想查看这些文件的源代码而不运行它们。 在搜索时,我发现大多数人都存在相反的问题:-),并且真的找不到适合我的解决方案。 我需要在文件夹中包含什么? 谢谢! 问题答案: 答案: 在.htaccess文件类型中 感谢布拉德!

  • 我正在使用jsoup HTML解析器,并试图进入span类并从中获取文本,但它什么也不返回,并且其大小始终为零。我粘贴了HTML源代码的一小部分。请帮我提取文本。 我尝试了以下代码: 如果你对我的内容不是很清楚,请问我。提前谢谢。

  • 问题内容: 当我仅具有对该INPUT的引用时,需要获得对该INPUT的FORM父级的引用。JavaScript有可能吗?如果愿意,请使用jQuery。 这不起作用: 问题答案: 作为输入的本机DOM元素还具有指向它们所属形式的属性: IE 4.0+,Firefox 1.0+,Opera9.0+支持输入字段的属性,这是jQuery保证的更多浏览器,因此您应该坚持这一点。 如果这是另一种类型的元素(不

  • 问题内容: 如何使Jackson的build()方法漂亮地打印其JSON输出?这是一个漂亮地打印丑陋形式的JSON代码的示例。我需要采用漂亮的JSON代码版本,然后将其简化为丑陋的FOM。如何做呢?我需要将其转换为: 对此: 我试图删除’\ n’,’\ t’和’‘字符;但是值中可能包含某些字符,所以我不能这样做。还有什么可以做的? 问题答案: Jackson允许您从JSON字符串读取,因此将漂亮打