django-rest-framework:如何序列化已经包含JSON的字段? [英] django-rest-framework: How Do I Serialize a Field That Already Contains JSON?

查看:111
本文介绍了django-rest-framework:如何序列化已经包含JSON的字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对django-rest框架很新,所以可以使用一些帮助。



我有一个对象,一个TextField是一个包含JSON的字符串。



我使用django-rest-framework将整个对象序列化为JSON。但是,这个已经是JSON的字符串被序列化为包含JSON而不是JSON本身的编码字符串。



如何告诉序列化程序将此字段发送 - 而不是尝试将此字符串转换为JSON?有没有某种忽略装饰器或覆盖我可以使用?或者我可以在序列化之前先解析这个JSON?



这是有区别:

  {data:data} 

  {data:data} 

后者在客户端使用更加麻烦...

解决方案

你可以简单地将json解码成python对象:

  json_obj = json.loads(model.json_text)

一旦序列化对象,将该字段替换为解码对象:

  data = serializer.data 
data [field] = json_obj
返回响应(数据)


I am pretty new to the django-rest-framework, so could use some help.

I have an object with a TextField that is a string containing JSON.

I'm using django-rest-framework to serialize the whole object as JSON. However, this one string that is already JSON gets serialized as an encoded string containing the JSON rather than the JSON itself.

How can I tell the serializer to send this field as-is rather than trying to transform this string to JSON? Is there some sort of "ignore" decorator or override I can use? Or can I pre-parse this JSON before serializing?

This is the difference between having:

{"data": data}

and

{"data": "data"}

The latter being more of a nuisance to use on the client side...

解决方案

You can simply decode the json into python object:

json_obj = json.loads(model.json_text)

Once you serialize your object, replace this field with the decoded object:

data = serializer.data
data["field"] = json_obj
return Response(data)

这篇关于django-rest-framework:如何序列化已经包含JSON的字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆