Python對象轉JSON資料樣本

來源:互聯網
上載者:User


在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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.