使用 Jackson JSON 在 Spring MVC 中解析 JSON

2022-09-01 00:24:29

好吧,所以我已经看了一会儿了,现在没有进一步了。我有一个Spring MVC servlet,我需要从JavaScript前端Web应用程序接受JSON。要解析JSON,我需要使用Jackson。我需要获取 JSON 中的值,并按照它们在 JSON 中出现的顺序将它们存储到列表中。我尝试过将JsonFactory与JsonParser和JsonNode对象一起使用,但可以让它工作。我还尝试打开一个BufferedReader并逐行迭代请求正文,但同样无法完全得到这个。我在这里看了几个相关的问题,但到目前为止还没有一个对我有用。

任何知道的人都可以在这里为我指出正确的方向,请,一个带有示例的网页会很棒!


答案 1

使用像Jackson这样的映射技术的全部意义在于,您可以使用对象(您不必自己解析JSON)。

定义一个类似于您期望的 JSON 的 Java 类。

例如,这个JSON:

{
"foo" : ["abc","one","two","three"],
"bar" : "true",
"baz" : "1"
}

可以映射到此类:

public class Fizzle{
    private List<String> foo;
    private boolean bar;
    private int baz;
    // getters and setters omitted
}

现在,如果您有如下所示的控制器方法:

@RequestMapping("somepath")
@ResponseBody
public Fozzle doSomeThing(@RequestBody Fizzle input){
    return new Fozzle(input);
}

并且您从上面传入JSON,Jackson将自动为您创建一个Fizzle对象,并且它将使用mime类型将返回对象的JSON视图序列化为响应。application/json

有关完整的工作示例,请参阅我之前的答案


答案 2

我正在使用来自 http://json-lib.sourceforge.net/
json-lib-2.1-jdk15的json lib.jar

import net.sf.json.JSONObject;
...

public void send()
{
    //put attributes
    Map m = New HashMap();
    m.put("send_to","my@admin.lan");
    m.put("email_subject","this is a test email");
    m.put("email_content","test email content");

    //generate JSON Object
    JSONObject json = JSONObject.fromObject(content);
    String message = json.toString();
    ...
}

public void receive(String jsonMessage)
{
    //parse attributes
    JSONObject json = JSONObject.fromObject(jsonMessage);
    String to = (String) json.get("send_to");
    String title = (String) json.get("email_subject");
    String content = (String) json.get("email_content");
    ...
}

更多示例 http://json-lib.sourceforge.net/usage.html