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

构建嵌套的JSONObject

顾炎彬
2023-03-14

下面是我使用的代码

    JSONObject requestParams = new JSONObject();

    requestParams.put("something", "something value");
    requestParams.put("another.child", "child value");

这就是 API 需要发布的方式

{
   "something":"something value",
   "another": {
   "child": "child value"
   }
}

我收到一个错误,指出“另一个.child字段是必需的。”

我如何通过restAsared发布这个?其他不需要通过嵌套发布的API可以工作,所以我假设这就是它失败的原因。

共有2个答案

盖夕
2023-03-14

您可以创建一个请求对象,然后让 RestAssur 库为您将该对象序列化为 json。

比如说:

        class Request {
            private String something;
            private Another another;

            public Request(final String something, final Another another) {
                this.something = something;
                this.another = another;
            }

            public String getSomething() {
                return something;
            }

            public Another getAnother() {
                return another;
            }
        }

       class Another {
            private String child;

            public Another(final String child) {
                this.child = child;
            }

            public String getChild() {
                return child;
            }
        }

..然后用测试方法

@Test
public void itWorks() {
...
        Request request = new Request("something value", new Another("child value"));

        given().
                contentType("application/json").
                body(request).
        when().
                post("/message");
...
}

只是不要忘记contentType("application/json")行,以便库知道您想要使用json。

请参见: https://github.com/rest-assured/rest-assured/wiki/Usage#serialization

廖诚
2023-03-14

您发布的内容是这样的,因为JSONObject没有点分隔键路径的概念。

{
   "something":"something value",
   "another.child": "child value"
}

您需要创建另一个JSONObject

JSONObject childJSON = new JSONObject():
childJSON.put("child", "child value");
requestParams.put("another", childJSON);
 类似资料:
  • 问题内容: 我有正在使用nodeJS读取的csv文件。我在阅读之前将每个文件转换为文本。 文件中的每一行都有以’=’分隔的数据。 每行看起来像 “ =“之前的第一部分代表我应用程序中json对象的索引。我的目的是解析此数据并为其构建json表示,以便上面的行成为 使用javascript / node js; 如何将应该表示嵌套JSON键序列的字符串转换为上述json对象? 问题答案: 您可以分割

  • 问题内容: 我今天才刚开始编写Go(有0个经验),想知道Go是否支持任何形式的“构建所有源文件” 。 我的项目结构是 当我做 这失败了,这是正确的,因为所有源文件都在子包中。 是否有一个命令可以构建所有子包, 而无需显式列出每个 子包? 问题答案: 你以后到基本目录,使用注意,有3个阶段,因为它是一个省略号。这将递归地构建所有子目录。当然,您始终可以从任何地方进行操作而无需访问目录。 对于使用依赖

  • 我正在为我的类开发一个简单的jsp/servlet/tomcat webapp。教授要求我们使用与默认动态web项目结构略有不同的文件夹结构。他不想使用webcontent文件夹,而是想要src/main/java和src/main/webapp下的所有源代码。 当我运行应用程序时,我的欢迎文件显示良好,但当我试图访问我的servlets时,我得到: ClassNotFoundException.

  • 我正在尝试构建复杂的JSON对象嵌套数组。我正在努力使用JOLT获得我期望的结构。任何帮助都将不胜感激。 我正试图从appspot上理解JOLT,但对于我来说,很难理解对数据集进行递归迭代。 即使数组中有 1000 个对象,“JobId”也应该与毫秒相同,这就是为什么我一次生成“JobId”而不是在每个对象中并尝试在下一次迭代中移动到正确的位置失败的原因。 输入的 JSON 为: 到目前为止,我想

  • 本文向大家介绍C++ 嵌套类/结构,包括了C++ 嵌套类/结构的使用技巧和注意事项,需要的朋友参考一下 示例 甲class或struct还可以包含另一个class/struct内部本身的定义,这被称为“嵌套类”; 在这种情况下,包含类称为“封闭类”。嵌套类定义被认为是封闭类的成员,但在其他方面则是单独的。 从封闭类的外部,可以使用范围运算符访问嵌套类。但是,在封闭类的内部,可以使用没有限定符的嵌套