pythonjson转model,python json转换

本文目录一览:

【Python】浅谈python中的json

一 前言  

   最近一直在做开发相关的工作–基于Django的web 平台,其中需要从model层传输数据到view 层做数据展示或者做业务逻辑处理。我们采用通用的Json格式–Json(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和程序解析。

二 认识Json

   2.1 Json 结构

   常见的Json格式为 “名称/值”对的集合,其中 值可以是对象,列表,字典,字符串等等。比如

backup_data = {“back_to_host”: “dbbk0”,

“ip_address”: “10.10.20.3”,

“host_name”: “rac4”,

“port”: 3306}

  2.2 使用Json

  Python的Json模块序列化与反序列化的过程分别是 编码和解码。这两个过程涉及到两组不同的函数

  编码 把一个Python对象编码转换成Json字符串,json.dumps(data)/json.dump(data,file_handler)

  解码 把Json格式字符串解码转换成Python对象,json.loads(data)/json.load(file_handler)

  在python中要使用Json模块做相关操作,必须先导入:

import Json

  2.3 主要函数

  编码函数主要有 json.dumps(data)/json.dump(data,file_handler)

   json.dumps()的参数是将python对象转换为字符串,如使用json.dumps序列化的对象json_dumps=json.dumps({‘a’:1, ‘b’:2}) ,json_dumps='{“b”: 2, “a”: 1}’

   json.dump 是将内置类型序列化为json对象后写入文件。

 解码函数主要由json.loads(data)/json.load(file_handler)  

    json.loads的参数是内存对象,把Json格式字符串解码转换成Python对象,json_loads=json.loads(d_json)  #{ b”: 2, “a”: 1},使用load重新反序列化为dict

    json.load()的参数针对文件句柄,比如本地有一个文件/tmp/test.json  json_load=json.load(open(‘/tmp/test.json’))

具体案例参考如下:

In [3]: data={“back_to_host”: “rac1”,

…: “ip_address”: “10.215.20.3”,

…: “host_name”: “rac3”,

…: “port”: 3306}

In [7]: json_str=json.dumps(data)

In [8]: print json_str

{“ip_address”: “10.215.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

In [9]: json_loads=json.load(json_str)

—————————————————————————

AttributeError Traceback (most recent call last)

ipython-input-9-180506f16431 in module()

—- 1 json_loads=json.load(json_str)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)

284

285 “”

注意 从上面的报错信息来看 json.loads 传参是字符串类型,并不是文件句柄,没有 read()属性。

In [10]: json_loads=json.loads(json_str)

In [11]: print json_loads

{u’back_to_host’: u’rac1′, u’ip_address’: u’10.215.20.3′, u’host_name’: u’rac3′, u’port’: 3306}

In [12]: type(json_loads)

Out[12]: dict

In [13]: type(json_str)

Out[13]: str

利用dump 将数据写入 dump.json

In [17]: with open(‘/tmp/dump.json’,’w’) as f:

…: json.dump(json_str,f)

…:

yangyiDBA:~ yangyi$ cat /tmp/dump.json

“{\”ip_address\”: \”10.10.20.3\”, \”back_to_host\”: \”rac1\”, \”host_name\”: \”rac3\”, \”port\”: 3306}”

yangyiDBA:~ yangyi$

利用json.load 将dump.sjon的数据读出来并赋值给 data 

In [18]: with open(‘/tmp/dump.json’,’r’) as f:

…: data=json.load(f)

…:

In [19]: print data

{“ip_address”: “10.10.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

三 小结

  本文算是一篇学习笔记,主要对比了json.loads/json.load  , json.dumps/ json.dump 的使用差异 ,方便以后更好的使用json 。

以上为本次分享内容,感谢观看。

用python怎么实现json和xml的互转

ajax是属于template里面的一个异步请求而已,如果你在views里面传回来是你说的“实体对像(models)”的话,我就有点搞不明白了。。。

不知道你在那个view方法直接return的是什么?

如果使用json处理对象的话请使用:

from django.http import HttpResponse

from models import mymodels

import simplejson

def ajax(request):

a = mymodels.objects.all()[0]

”’

此处假设a中有name、age参数

model对象是不能直接作为json可以处理,必须先转换为dict类型

”’

result = {}

result[‘name’] = a.name

result[‘age’] = a.age

result = simplejson.dumps(result)

return HttpResponse(result)

此时用ajax访问这个试图返回的内容就是:

上面这种办法不是很好,建议先写一个template模板专门来显示此model内容。

假设模板ajax.html的内容为:

===================ajax.html===============

name: }br /

age: }

=======================================

views视图如下:

from django.http import HttpResponse

from models import mymodels

from django.shortcuts import render_to_response

def ajax(request):

a = mymodels.objects.all()[0]

return render_to_response(“ajax.html”,)

此时用ajax访问这个视图返回的内容就是:

name: Jim Green

age: 14

以上的代码可能会有错误,因为是随手写的,希望能够帮到你

====修改了一下====

模板文件名打错了。。。

修改了一下就到了楼上的下面了,楼上你也太没水准了。直接复制

=====修改=====

使用model.__dict__属性可以获得字典,希望能帮到你

你的串号我已经记下,采纳后我会帮你制作

django model如何转换成json?

直接利用python提供的json包,在django model的定义中增加一个方法toJSON,利用django model 能访问 _meta.fields 得到相关属性而得到,例子如下:

class Category(models.Model):

    autoid = models.AutoField(primary_key=True)

    email=models.CharField(max_length=150,blank=False)

    comtype=models.CharField(max_length=20,blank=False)

    catname=models.CharField(max_length=150,blank=False)  

    

    def __unicode__(self):

        return ‘%s’ % (self.catname)

    

    def toJSON(self):

        import json

        return json.dumps(dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]]))

然后用django查出数据,并转换成json,代码如下:

row=models.Category.objects.get(autoid=23)    

print row.toJSON()

在python中 如何实现将一个json字符串转化为对象 并实现其逆过程 求大神指点!!

对象?json不能包含对象, 只能包含基本的数据类型, 键值对, 列表, 数字, 字符串等等

import json

d = {“k”: [1, 2, 3], “k2”: “tesadas”}

js = json.dumps(d)

print(js)

ds = json.loads(js)

print(ds)

”’

{“k2”: “tesadas”, “k”: [1, 2, 3]}

{‘k2’: ‘tesadas’, ‘k’: [1, 2, 3]}

”’

python怎么把json文件转换成字符串

1、说明:

json文件本身就是字符串文件,使用open函数就可以得到文件字符串内容,如果要解析文件则使用python3通过json模块load函数来实现。

2、代码示例:

首先编写一个json文件j.txt,内容如下:

{“errno”:1,”errmsg”:”操作成功!”,”data”:[]}

python代码如下:

import json

# 读取文件内容

whth open(‘j.txt’, ‘r’) as fr:

print(fr.read())

输出如下:

{“errno”:1,”errmsg”:”操作成功!”,”data”:[]}

# 解析json文件

with open(‘j.txt’, ‘r’) as fr:

o = json.load(fr)

print(o[‘errno’])

print(o[‘errmsg’])

print(len(o[‘data’]))

输出如下:

1

操作成功!

3、函数说明:

load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

反序列化fp(一个.read()包含 – 支持类文件对象一个JSON文件),以一个Python对象。

object_hook是将与被调用的可选功能任何对象文本解码(一个“dict“)的结果。返回值object_hook将用来代替dict。此功能可用于实现自定义解码器(例如JSON-RPC级提示)。

object_pairs_hook是将与被调用的可选功能任何对象的结果与对的有序列表字面解码。该的返回值object_pairs_hook将用来代替dict。

此功能可用于实现依赖于定制解码器命令该键和值对被解码(例如,collections.OrderedDict会记得插入的顺序)。如果object_hook也定义了object_pairs_hook优先。

要使用自定义JSONDecoder子类,与cls指定它kwarg;否则JSONDecoder使用。

4、其它说明:

也可以使用json.loads函数来直接处理字符串,方法如下:

o=json.loads(‘{“errno”:0,”errmsg”:”操作成功!”,”data”:[]}’)

python3 对象 |字典|json|yaml|字符串 相互转化

在研究 k8s 的yaml 配置文件的时候,我总担心自己一不小心 会写错,所以我向往 使用将对象 序列化 yaml 的形式,

其实 python object 可以 直接 转 yaml ,甚至也可以 直接 转成yaml文件!!!

这里 会经常用到几个 函数 vars() ast.

我们先尝试用最笨的方法 实现 object到yaml 的转化

在python对象 convert to dict 的形式,使用 vars()函数

然后 dict convert to json 使用 json.dumps(dict)函数

然后 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然后

再 yaml.safe_dump(ya,default_flow_style=False)

至此我们看到 从 python Object — dict —- json — yaml 的转化

其中 obj dict json yaml 转 string ,只要 str()函数即可,或者 str(vars())结合

yaml 格式 写入到文件 ,需要注意的是, open()函数 的mode 一定要是 ‘w’ ,不能是’wb’, b代表是二进制写入

yaml 写入的是dict str,使用 ‘wb’ 会报错,[yaml TypeError: a bytes-like object is required, not ‘str’]

【出现该错误往往是通过open()函数打开文本文件时,使用了‘rb’属性,如:fileHandle=open(filename,’rb’),则此时是通过二进制方式打开文件的,所以在后面处理时如果使用了str()函数,就会出现该错误,该错误不会再python2中出现。

具体解决方法有以下两种:

第一种,在open()函数中使用‘r’属性,即文本方式读取,而不是‘rb’,以二进制文件方式读取,可以直接解决问题。

第二种,在open()函数中使用‘rb’,可以在使用之前进行转换,有以下实例,来自: 】

其实 python object 可以 直接 转 yaml ,甚至也可以 直接 转成yaml文件!!!

比如我已经定义了一个 Dog python class,他有 好几个属性 并已经赋值初始化了

另外生成 yaml 对象

生成yaml文件

结果是

反过来 yaml —- json — 持久化 json 文件 indent=1属性是为了让 json 不以单行展示,而是展开

注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是键值对

【# set object is not JSON serializable [duplicate]

打开 demo.json

yaml — dict

yaml — python object

json — dict

json.loads()

dict– json

json.jumps()

str — dict

newdict=dict(str)

json — python object

一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下:

yaml — python object

对yaml,也只能先转换成json —dictionary,再转化成object,通过实践,源码如下:

dict — -python object

python对象 默认都有一个 私有的属性 dict 取值 就是 object的 字典形式, 赋值就就可以给对象属性对应赋值

例如json 转 对象

对象 转 json

Python之dict(或对象)与json之间的互相转化

在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作。

dict字典转json数据

对象转json数据

json数据转成dict字典

json数据转成对象

json的load()与dump()方法的使用

dump()方法的使用

原创文章,作者:WDXH,如若转载,请注明出处:https://www.506064.com/n/134929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WDXHWDXH
上一篇 2024-10-04 00:09
下一篇 2024-10-04 00:09

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29

发表回复

登录后才能评论