本站消息

站长简介/公众号


站长简介:高级软件工程师,曾在阿里云,每日优鲜从事全栈开发工作,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何将模型实例作为 JSON 返回以供 GSON android 端反序列化?

发布于2021-12-02 03:19     阅读(394)     评论(0)     点赞(3)     收藏(3)



我有一个 Django 休息框架GenericAPIView

class ListUnseenFriendRequests(generics.GenericAPIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request, format=None):
        friendship_requests_list = Friend.objects.unread_requests(user=request.user)
        friendship_requets_dict = [friend_request_as_json(obj) for obj in friendship_requests_list]
        return Response(json.dumps(friendship_requets_dict), content_type="application/json")

ListUnseenFriendRequests应该返回发出请求的用户的所有朋友的列表。我不确定这是否是返回FriendshipRequest对象的最佳/最简单的方法json,如果有更好的方法请告诉我。

我还使用了 2 个辅助方法,friend_request_as_json并且user_as_json

def friend_request_as_json(obj):
    return dict(
        id=obj.id, 
        from_user=user_as_json(obj.from_user), 
        created=str(obj.created))

def user_as_json(obj):
    return dict(
        id=obj.id,
        email=obj.email,
        firstName=obj.firstName,
        lastName=obj.lastName)

ListUnseenFriendRequests使用邮递员测试视图这就是我得到的:

"[{\"created\": \"2017-08-02 09:06:54.272168+00:00\", \"id\": 29, 
\"from_user\": {\"lastName\": \"Graham\", \"email\": \"joe@gmail.com\", \"firstName\": \"Joe\", \"id\": 5}}]"

为什么会有这些反斜杠?这有什么不同吗?

在客户端,我使用改造和 GSON 为我反序列化。将保存此响应数据的客户端模型是FriendRequestResponse

public class FriendRequestResponse {

    @SerializedName("id")
    @Expose
    private int id;

    @SerializedName("from_user")
    @Expose
    private User fromUser;

    @SerializedName("created")
    @Expose
    private String createdAt;

    public FriendRequestResponse(int id, User fromUser, String createdAt) {
        this.id = id;
        this.fromUser = fromUser;
        this.createdAt = createdAt;
    }

    public int getId() {
        return id;
    }

    public User getFromUser() {
        return fromUser;
    }

    public String getCreatedAt() {
        return createdAt;
    }
}

User模型:

public class User {

    @SerializedName("id")
    @Expose
    private int id;

    @SerializedName("email")
    @Expose
    private String email;

    @SerializedName("firstName")
    @Expose
    private String firstName;

    @SerializedName("lastName")
    @Expose
    private String lastName;

    @SerializedName("date_joined")
    @Expose
    private String dateJoined;

    private String password;

    public User(String email, String firstName, String lastName, String password) {
        this.email = email;
        this.firstName = firstName;
        this.lastName = lastName;
        this.password = password;
    }

    public int getId() { return id; }

    public String getEmail() {
        return email;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public String getPassword() {
        return password;
    }

    public String getDateJoined() {
        return dateJoined;
    }
}

这个模型的结构是否正确以获取 json 并适合它?


解决方案


您已经拥有 JSON,您正试图将其转储为 JSON。

尝试使用以下内容:

return Response(json.loads(friendship_requets_dict), content_type="application/json")






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1107006/c4bc455f5d489d5b46bc/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)