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

在Spring RESTful服务中生产和使用自定义JSON对象

邹海超
2023-03-14
问题内容

我有一些JSON对象,它们比我拥有的Java对象的JSON表示更为复杂。我有构建这些JSON对象的方法,我想直接返回并使用它们。我使用org.json库来构建JSON。我可以GET通过将JSON对象返回为来使该方法正常工作String。这是正确的方法吗?

@RequestMapping(value = "/getjson", method = RequestMethod.GET, produces="application/json")
@ResponseBody
public String getJson() {
    JSONObject json = new JSONObject();
     JSONObject subJson = new JSONObject();
    subJson .put("key", "value");
    json.put("key", subJson);
    return json.toString();
}

现在,我想知道如何使用JSON对象?作为字符串并将其转换为JSON对象?

    @RequestMapping(value = "/post", method = RequestMethod.POST, produces="application/json", consumes="application/json")
    @ResponseBody
    public String post(@RequestBody String json) {
        JSONObject obj = new JSONObject(json);
        //do some things with json, put some header information in json
        return obj.toString();
    }

这是解决我的问题的正确方法吗?我是新手,因此请指出可以做得更好的任何事情。请注意:我不想返回POJO。


问题答案:

我认为使用杰克逊图书馆,您可以执行以下操作。

@RequestMapping(value = "/getjson", method = RequestMethod.GET, produces="application/json")
@ResponseBody
public String getJson() {
   //your logic
    ObjectMapper mapper = new ObjectMapper();
    return mapper.writeValueAsString(json);
}

@RequestMapping(value = "/post", method = RequestMethod.POST, produces="application/json", consumes="application/json")
@ResponseBody
public String post(@RequestBody String json) {
    POJO pj = new POJO();
    ObjectMapper mapper = new ObjectMapper();
    pj = mapper.readValue(json, POJO.class);

    //do some things with json, put some header information in json
    return mapper.writeValueAsString(pj);
}


 类似资料:
  • 问题内容: 我一直在搜寻我的屁股,试图找出如何做到这一点:我有一个Jersey REST服务。调用REST服务的请求包含一个JSON对象。我的问题是,从Jersey POST方法实现中,如何获得对HTTP请求正文中的JSON的访问? 任何提示,技巧,示例代码的指针,将不胜感激。 谢谢… -史蒂夫 问题答案: 我不确定如何获取JSON字符串本身,但是您当然可以获取其中包含的数据,如下所示: 定义一个

  • 使用Jackson(最新版本可以)为JAVA bean/POJO类生成一个JSON模式,这样它就可以正确地包含嵌套对象的结构,并且还希望向嵌套POJO添加自定义属性(在我的例子中,希望为每个嵌套POJO参数添加一个完全分类的classname属性)。 用例- 比如说,我有一个Person类,如下所示。我用这个人作为我某个操作的参数。- 这个问题肯定与此相关--如何使用jackson遍历生成的jso

  • Appium 的 iOS 版本的后端用的是Facebook's WebDriverAgent。该后端是基于苹果公司的 XCTest 框架,所以也有所有XCTest 框架已知的问题。其中有些问题我们正在设法解决,有一些在现阶段可能无法解决。本文中描述的方法已经能够使您完全掌握在设备上如何构建、管理和运行WDA。通过这种方式,您可以在CI环境中对您的自动化测试进行微调,并使其在长期运行的情况下更加稳定

  • 我试图创建一个音频捕获活动,所以我从android文档中复制了这个类,如下所示 在我的xml页面中,我试图创建一个id为麦克风的RecordButton。类似这样的东西 现在,当我尝试运行该应用程序时,会出现以下输出

  • 我编写了一个spring kafka包,使用spring boot将消息发送到kafka主题,其中“Key”作为字符串,“Arraylist”作为值。“Custom Object”是一个具有属性item id、item name和item ordered count的类。 Kafka制作人日志如下所示。 我编写了一个自定义序列化程序,如下所示。 “Arraylist”的Serde类如下所示。 Ka

  • 嗨,我正在尝试向当前默认规则添加额外的实体。它在stanfordNLP中的txt.file上工作,但是当我在python中使用stanfordNLPServer时,它不能覆盖默认规则。 我在Python中使用coreNLP的NLTK包装器,输入文本是DataFrame中的一列。默认规则运行良好,但无法添加自定义规则。 适用于StanfordCorenlp的Java命令: 我的猜测是,coreNLP