You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中表示指定JSON结构的请求对象并实现调用

正确构建嵌套JSON对应的Java请求对象及使用指南

你的问题出在没有准确映射JSON的嵌套结构——原JSON里的attachments是包含fields数组的对象集合,而fields里的每个元素是带有value属性的对象,不是单纯的字符串列表。我来帮你修正类结构,并演示如何赋值和使用:

第一步:定义匹配JSON结构的Java类

我们需要用嵌套类(或者独立类)来对应JSON里的层级关系,同时记得生成getter/setter方法(如果用Lombok的@Data注解可以自动生成,会更简洁):

import java.util.List;

public class RequestTest {
    private List<Attachment> attachments;
    private String channel;
    private String value;

    // 对应JSON中的attachment对象
    public static class Attachment {
        private List<Field> fields;

        // getter和setter
        public List<Field> getFields() {
            return fields;
        }

        public void setFields(List<Field> fields) {
            this.fields = fields;
        }
    }

    // 对应JSON中的field对象
    public static class Field {
        private String value;

        // getter和setter
        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }

    // RequestTest类的getter和setter
    public List<Attachment> getAttachments() {
        return attachments;
    }

    public void setAttachments(List<Attachment> attachments) {
        this.attachments = attachments;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

第二步:为对象赋值

按照层级从内到外创建对象,再组装起来:

import java.util.ArrayList;
import java.util.List;

public class RequestDemo {
    public static void main(String[] args) {
        // 1. 创建最内层的Field对象
        RequestTest.Field field = new RequestTest.Field();
        field.setValue("Testing value");

        // 2. 创建Attachment对象并添加Field
        RequestTest.Attachment attachment = new RequestTest.Attachment();
        List<RequestTest.Field> fieldList = new ArrayList<>();
        fieldList.add(field);
        attachment.setFields(fieldList);

        // 3. 创建RequestTest主对象并组装所有部分
        RequestTest request = new RequestTest();
        List<RequestTest.Attachment> attachmentList = new ArrayList<>();
        attachmentList.add(attachment);
        request.setAttachments(attachmentList);
        request.setChannel("testing");
        request.setValue("Testing value");
    }
}

第三步:将对象转为JSON(可选但常用)

如果需要把Java对象转回JSON格式发送请求,推荐用Jackson库处理。先添加Maven依赖(如果是Maven项目):

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 用最新稳定版即可 -->
</dependency>

然后序列化代码:

import com.fasterxml.jackson.databind.ObjectMapper;

public class RequestDemo {
    public static void main(String[] args) throws Exception {
        // 上面的赋值代码...

        // 序列化为JSON字符串
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonOutput = objectMapper.writeValueAsString(request);
        System.out.println(jsonOutput);
        // 输出结果就是你提供的原始JSON结构
    }
}

这样你就可以正确表示嵌套结构,完成对象赋值,并且能顺利将对象转为JSON用于请求啦。

内容的提问来源于stack exchange,提问作者user1167642

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:07:39