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

从API中具有不同属性名称的JSON文件中获取对象

周作人
2023-03-14

我有一个这样的JSON文件:

{
    "rewrite_url_captures": [
        {
            "description": [
                "Captures arguments in a URL and rewrites the URL using these arguments. "
            ],
            "configuration": {},
            "name": "URL Rewriting with Captures"
        }
    ],
    "routing": [
        {
            "description": [],
            "configuration": {},
            "name": "Routing"
        }
    ],
    "soap": [
        {
            "description": [
                "This policy adds support for a very small subset of SOAP."
            ],
            "configuration": {},
            "name": "SOAP"
        }
    ]
}

我想得到这3个对象的名称:rewrite_url_captures路由肥皂

我已经这么做了:

js prettyprint-override">import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "rewrite_url_captures"
})
public class PoliciesTest {

    protected ArrayList<PolicyTest> policy;

    @JsonProperty("rewrite_url_captures")
    public ArrayList<PolicyTest> getPolicy() {
        if (policy == null) {
            policy = new ArrayList<PolicyTest>();
        }
        return this.policy;
    }
}

调用这个类:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
        "name"
})
public class PolicyTest {

    @JsonProperty("name")
    private String name;

    public Object getName() {
        return name;
    }
}

我得到这个作为输出,所以它的工作原理:

输出

我的问题是,我只能通过修改PoliciesTest类中相应名称的JSON属性来逐个访问这3个对象,除非我希望同时将这3个对象作为输出,并且不能重载@JSONProperty。

以前有人面对过这个问题吗?

共有1个答案

牛越
2023-03-14

使用org.json库可能会解决您的问题。但是您必须手动从json中获取对象。

 类似资料:
  • 问题内容: 我想知道JavaScript中是否有任何方法可以像这样遍历对象。 但是这样获取每个属性的名称。 我似乎在Google上找不到类似的东西。他们说与他们一起传递变量的名称,但这不是我要实现的选择。 谢谢你的尽心帮助。 问题答案: 使用Object.keys(): 给您一个属于输入对象的属性名称数组。

  • 获取所有名称为“Sam”的对象。

  • 问题内容: 如果类路径中有两个JAR文件,两个文件的根中都包含一个名为“ config.properties”的资源。有没有办法检索类似于的 两个 文件?顺序不相关。 一种替代方法是,如果可能的话,在类路径中加载与某些条件匹配的每个属性文件。 问题答案: 您需要 (或静态版本)。 但是不幸的是,资源不在“目录”中存在一个已知问题。例如,可以,但是可能是一个问题。在Spring Reference中

  • 问题内容: 我有带有“ operation.date”,“ operation.name”等列的mysql表。用我获取该表数据作为对象后,得到此信息(行的print_r): 我怎么存取权限,并和所有其他古怪的命名对象的属性? 问题答案: 在您的SQL查询中指定别名,例如 或访问这些属性, 或将对象强制转换为数组,如下所示:。

  • 问题内容: 我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS Web服务。因为我是一个初学者,所以我遵循Java类优先方法,即首先创建Java类,然后生成WSDL文件。 当我尝试创建wsdl文件时,出现异常: java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.I

  • 问题内容: 我正在用C#编写.NET Framework 3.5。 我正在尝试将某些Json解析为JObject。 Json如下: 当我尝试将此Json解析为JObject时,JObject仅了解LargeBox。SmallBox和MedBox的信息丢失。显然,这是因为它将“ TBox”解释为一个属性,并且该属性已被覆盖。 我从Delphi编码的服务中收到此Json。我正在尝试为该服务创建C#代理