使用json模块提供的loads方法和dumps方法,可以很方便的载入和读取json数据格式。而在具体实际应用中,我们使用python数据格式是 string、list 或dict等,这类格式如何直接转换为json格式呢?

可以借用python内部的__dict__ 字典方法将格式转换为json格式并读取,不带参数示例如下:

一、不带参数的class类转化为json

class Foo(object):
def __init__(self):
self.x = 1
self.y = 2
foo = Foo()
# s = json.dumps(foo) # raises TypeError with "is not JSON serializable"
s = json.dumps(foo.__dict__) # s set to: {"x":1, "y":2}

调用上面的方法时,print s时,其值为:{"x":1, "y":2} 。

二、带参数的class方法转化为json

如果要传入的是一个多行字符串参数,其也可以自动进行转义:

#!/usr/bin/env python
# coding=utf8
# Copyright (C) 2018 www.361way.com site All rights reserved.
import json
class Foo(object):
def __init__(self,cmd):
self.Command = cmd
cmd="""
#!/bin/bash
echo "Result:4 "
ps -ef|grep java|wc -l
netstat -an|grep 15380
echo ";"
"""
foo = Foo(cmd)
s = json.dumps(foo.__dict__)
print s

其执行输出如下:

[root@localhost tmp]# python a.py
{"Command": "\n#!/bin/bash\n\necho \"Result:4 \"\nps -ef|grep java|wc -l\nnetstat -an|grep 15380\necho \";\"\n\n"}

后面的结构体转义部分,实际上就是json.JSONEncoder().encode方法处理的结果:

print json.JSONEncoder().encode(cmd)

可以用上面的命令进行测试,将上面的代码加入到上面python文件的最后,执行的结果如下:

[root@localhost tmp]# python a.py
{"Command": "\n#!/bin/bash\n\necho \"Result:4 \"\nps -ef|grep java|wc -l\nnetstat -an|grep 15380\necho \";\"\n\n"}
"\n#!/bin/bash\n\necho \"Result:4 \"\nps -ef|grep java|wc -l\nnetstat -an|grep 15380\necho \";\"\n\n"

python如何序列化json数据的更多相关文章

  1. mvc 使用Newtonsoft.Json进行序列化json数据

    mvc 使用Newtonsoft.Json进行序列化json数据 JsonResult  使用js 序列号化,先集成扩展.使用newtonsoft http://blog.csdn.net/zhang ...

  2. python中序列化json模块和pickle模块

    内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...

  3. Python格式化处理json数据的方式

    1.问题 在遇到json数据的过程中,我们经常需要获取json数据中某个值的操作,如果是用get方法去取比较繁琐,接下来介绍两种方式来取值. 2.jsonpath来格式化处理json数据 2.1介绍 ...

  4. (数据科学学习手札125)在Python中操纵json数据的最佳方式

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常使用Python的过程中,我们经常会 ...

  5. 解决springboot序列化 json数据到前端中文乱码问题

    前言 关于springboot乱码的问题,之前有文章已经介绍过了,这一篇算是作为补充,重点解决对象在序列化过程中出现的中文乱码的问题,以及后台报500的错误. 问题描述 spring Boot 中文返 ...

  6. python:序列化与数据持久化

    数据持久化的方式有: 1.普通文件无格式写入:将数据直接写入到文件中 2.普通序列化写入:json,pickle 3.DBM方式:shelve,dbm 相关内容: json pickle shelve ...

  7. python 模块 - 序列化 json 和 pickle

    1,引入 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval ...

  8. Python基础-序列化(json/pickle)

    我们把对象(变量)从内存中变成可存储的过程称之为序列化,比如XML,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等 ...

  9. python之序列化json模块与pickle模块(待补充)

    一.json是所有语言都通用的一种序列化格式 只支持 : 列表,字典字符串,数字,且字典的key必须是字符串 ''' 1. dumps , loads 在内存中做数据转换: dumps : 数据类型 ...

随机推荐

  1. Elasticsearch 索引、更新、删除文档

    一.Elasticsearch 索引(新建)一个文档的命令: curl XPUT ' http://localhost:9200/test_es_order_index/test_es_order_t ...

  2. flask跨域请求

    跨域文件上传的时候,浏览器会自动发起一个 OPTIONS 方法到服务器,现在后台解决前端跨域解决前端跨域请求的问题 客户端发起的这个 OPTIONS 可以说是一个“预请求”,用于探测后续真正需要发起的 ...

  3. CentOS环境下jdk安装部署

    1.准备jdk安装文件: 这里我使用的是 jdk-7u79-linux-x64.tar.gz 2.在 /usr/local 目录下创建 sotfware目录,并上传JDK文件: 解压文件并修改文件夹为 ...

  4. 【巷子】---json-server---基本使用

    一.前后端并行开发的痛点 前端需要等待后端开发完接口以后 再根据接口来完成前端的业务逻辑 二.解决方法 在本地模拟后端接口用来测试前端效果 这种做法称之为构建前端Mock   三.json-serve ...

  5. GitHub 终端加速最佳实践

    终端加速 GitHub 方法的前置条件, 一是购买了加速服务或者租用 VPS 搭建加速服务, 二是系统是 macOS, 三是终端是 iTerm, 四是 Shell 是 zsh. 终端加速 GitHub ...

  6. OSI互联数据包封装与解封装过程

    当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程. .当一个高层的数据包到达传输层,由于tel ...

  7. 关于jquery的css的一些知识

    Query实例CSS 样式表动态选择本实例主要说的还是jquery的选择器,关于jquery的css的一些知识用类似 $("li").css("cursor", ...

  8. 使用sift特征点进行knn最近邻匹配

    #include <opencv2/xfeatures2d/nonfree.hpp> #include <opencv2/features2d/features2d.hpp> ...

  9. ssh各种姿势---ssh-keygen 生成ssh公钥和私钥

    利用ssh-keygen -t rsa可以生成ssh公钥和私钥,实现免输密码的ssh登陆     ssh-keygen -l -f /etc/ssh_host_rsa_key   ssh-keygen ...

  10. linker command failed with exit code 1 (use -v to see invocation) 变量重名

    有时候,xcode报错看不到,点最后一个按钮,类似气泡的就能看到 报错信息: duplicate symbol _imgNummmm in:    /Users/mianmian/Library/De ...