Python对象转JSON数据示例

在Python对于简单的对象转json还是比较简单的,如下

import json

d = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], 'c': 100}
json_str = json.dumps(d)
print json_str

对于复杂对象,可以使用下面的方法来实现,比如:

import json

class Customer:
    def __init__(self, name, grade, age, home, office):
        self.name = name
        self.grade = grade
        self.age = age
        self.address = Address(home, office)
    def __repr__(self):
        return repr((self.name, self.grade, self.age, self.address.home, self.address.office))

class Address:
    def __init__(self, home, office):
        self.home = home
        self.office = office
    def __repr__(self):
        return repr((self.name, self.grade, self.age))

customers = [
        Customer('john', 'A', 15, '111', 'aaa'),
        Customer('jane', 'B', 12, '222', 'bbb'),
        Customer('dave', 'B', 10, '333', 'ccc'),
        ]

json_str = json.dumps(customers, default=lambda o: o.__dict__, sort_keys=True, indent=4)
print json_str

结果如下

[
    {
        "address": {
            "home": "111",
            "office": "aaa"
        },
        "age": 15,
        "grade": "A",
        "name": "john"
    },
    {
        "address": {
            "home": "222",
            "office": "bbb"
        },
        "age": 12,
        "grade": "B",
        "name": "jane"
    },
    {
        "address": {
            "home": "333",
            "office": "ccc"
        },
        "age": 10,
        "grade": "B",
        "name": "dave"
    }
]

例子

# -*- encoding: UTF-8 -*-
 
class Student:
    name = ''
    age = 0
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
 
def convert_to_dict(obj):
    '''把Object对象转换成Dict对象'''
    dict = {}
    dict.update(obj.__dict__)
    return dict
      
        
def convert_to_dicts(objs):
    '''把对象列表转换为字典列表'''
    obj_arr = []
    
    for o in objs:
        #把Object对象转换成Dict对象
        dict = {}
        dict.update(o.__dict__)
        obj_arr.append(dict)
    
    return obj_arr
          
 
def class_to_dict(obj):
    '''把对象(支持单个对象、list、set)转换成字典'''
    is_list = obj.__class__ == [].__class__
    is_set = obj.__class__ == set().__class__
    
    if is_list or is_set:
        obj_arr = []
        for o in obj:
            #把Object对象转换成Dict对象
            dict = {}
            dict.update(o.__dict__)
            obj_arr.append(dict)
        return obj_arr
    else:
        dict = {}
        dict.update(obj.__dict__)
        return dict
   
stu = Student('zhangsan', 20)
 
print '-----------'
print convert_to_dict(stu)
 
print '-----------'
print convert_to_dicts([stu, stu])
 
print '-----------'
print class_to_dict(stu)
 
print '-----------'
print class_to_dict([stu, stu])
 
stua = Student('zhangsan', 20)
stub = Student('lisi', 10)
 
stu_set = set()
stu_set.add(stua)
stu_set.add(stub)
print class_to_dict(stu_set)

时间: 2024-10-15 16:19:39

Python对象转JSON数据示例的相关文章

Python对象类型转换json数据的例子

有时候,在Django的model中,直接查询出来的orm对象,想直接转成json会报错: TypeError is not JSON serializable def convert_to_builtin_type(obj):     # print 'default(', repr(obj), ')'     # Convert objects to a dictionary of btheir representation     d = { '__class__':obj.__class

Android利用Gson实现对象和Json数据的相互转换

MainActitity如下: package cc.test; import android.app.Activity; import android.os.Bundle; /** * Demo描述: * 利用Gson实现对象和Json数据的相互转换 * * Demo描述: * 通过一个网络请求,获取JSON数据 * * 注意: * 1 网络请求的参数是JSON格式的数据 * 2 请求结果返回的亦是JSON格式的数据 * */ public class MainActivity extends

jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???

问题描述 jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???  写道 解决方案 上面的链接搞乱了,看这个:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data&s[]=json#json_data解决方案二:你的后台返回的相应数据格式不对啊,jqgrid有要求的:看=json#json_data]官方文档这里

【Python】python对象与json相互转换

在网络通信中,json是一种常用的数据格式,对于python来讲,将类转化为json数据以及将json数据转化为对象是一件非常容易的事情. 下面给出两者转化的方法 # -*- coding: UTF-8 -*- import json #自定义类 class MyClass: #初始化 def __init__(self): self.a=2 self.b='bb' ########################## #创建MyClass对象 myClass=MyClass() #添加数据c

jquery解析JSON数据示例代码

 作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式 这里可以找到json.js的代码,后面还需要formutil.js的代码及MD5.js    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明.  这里首先给

PHP自定义函数格式化json数据示例_php技巧

本文实例讲述了PHP自定义函数格式化json数据的方法.分享给大家供大家参考,具体如下: <?php /** * Formats a JSON string for pretty printing * * @param string $json The JSON to make pretty * @param bool $html Insert nonbreaking spaces and <br />s for tabs and linebreaks * @return string

java生成json数据示例_java

JsonTools.java 复制代码 代码如下: package com.lihua.json.tools; import net.sf.json.JSONObject; public class JsonTools {  public JsonTools() {  }  /**   * @param key   *            表示json字符串的头信息   * @param value   *            是对解析的集合的类型   * @return   */  //将

jquery解析JSON数据示例代码_jquery

这里可以找到json.js的代码,后面还需要formutil.js的代码及MD5.js 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先给出JSON字符串集,字符串集如下: 代码如下: 复制代码 代码如下: var data=" { root: [ {name:'1',value

AJAX如何接收JSON数据示例介绍_AJAX相关

简介 在我们了解如何使用AJAX返回JSON数据的时候要先明白下列几点 1. JSON如何来表示对象的 2. JSON如何来表示数组的 复制代码 代码如下: var object = { "labId": "1", "labName": "服装" }; 通常我们使用如上的方式来表示JSON对象,那么数组呢 复制代码 代码如下: var array = [{ "labId": "1", &