繁体   English   中英

我可以在json响应中发送java对象吗?

[英]Can i send java object in a json response

例如我有java类帖子:

public class Post{
String title;
String text;
}

如果我创建此类的实例并将其转换为我的servlet控制器中的ajax响应

@RestController
public class AjaxNewsController {
 @JsonView(Views.Public.class)
    @PostMapping(value = "/getPost")
    public AjaxResponseBody getSearchResultViaAjax(@RequestBody AjaxPostResponse postId) {
        AjaxResponseBody result = new AjaxResponseBody();
        result.setCode("200");
        result.setMsg("found POST");
        result.setResult(post);
        return result;

    }
}

我的问题是:我可以在客户端使用javascript检索帖子字段标题和文本,如果可以,那么如何?

以下是我在浏览控制台中的响应的控制台示例

但是如何用ajax和jquery中的字段提取我的帖子?

UPD

在一些reaserach后,我发现我的serlvet不会将我的java pojo转换成json。 我该怎么办?

UPD2

我的请求发送normaly但serlvet不会将POST类转换为json。

这是我的javascript:

function likePost(postId,ratingElem, ratingChange) {

    var search = {}
    search["postId"] = postId;
    search["rating"] = ratingChange;

    $.ajax({
        type : "POST",
        contentType : 'application/json; charset=utf-8',
        dataType : 'json',
        url : "likePost",
        data : JSON.stringify(search),
        timeout : 100000,
        success : function(data) {
            console.log("SUCCESS: ", data);
            changeRating(ratingElem,data.post.getTopic());
        },
        error : function(e) {
            console.log("ERROR: ", e);
            changeRating(ratingElem,'error');
        },
        done : function(e) {
            console.log("DONE");
            enableSearchButton(true);
        }
    });

}

状态和消息很好,但结果为空。

试试吧:

var req = new XMLHttpRequest();
req.open('POST', 'your_url', false); 
req.send(null);
if(req.status == 200)
dump(req.responseText);

如果您想从其他域获取数据,请阅读cors

所以我解决了我的问题。 我使用com.fasterxml.jackson.core所以我只需要在我的类中标记我想用@JsonView注释转换为json的字段

 @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "post_id",
            unique = true, nullable = false)
    @JsonView(Views.Public.class)
    private Integer postId;

标记的所有内容都将被转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM