python脚本解析json文件

没写完。但是有效果。初次尝试,写的比较不简洁。。。

比较烦的地方在于:

1,中文编码:

pSpecs.decode('raw_unicode_escape')

2,花括号转义:
{{
#!/usr/bin/python
# -*- coding: UTF-8 -*- import os
import json
import sys reload(sys)
sys.setdefaultencoding("utf-8") json_file = 'alink.json' #读文件
md_file = 'alink.md' #写文件 #写入模版
protocol_templete ='## {pName}\n### [Format]\n```json\n {{\n "{property}":\"\"\n }}\n```\n### [Parameters]\n* {property};{pType};属性说明.\n* specs:{pSpecs}\n\n\n' def writeServices(jsonObj):
print(jsonObj)
pName = jsonObj["name"];
# pType = jsonObj["type"]; def writeProperty( jsonObj ):
pName = jsonObj["name"];
property = jsonObj["identifier"];
pType = jsonObj["dataType"]["type"]
pSpecs = json.dumps(jsonObj["dataType"]["specs"])
print(pSpecs.decode('raw_unicode_escape')) //解决中文编码问题
# print(protocol_templete.format(pName="".join(pName),pType=pType,pSpecs=pSpecs,property="".join(property)))
# writeFile(protocol_templete)
writeFile(protocol_templete.format(pName="".join(pName),pType=pType,pSpecs=pSpecs.decode('raw_unicode_escape'),property="".join(property))) def writeEvent(jsonObj):
print(jsonObj) #追加文件内容
def writeFile(str):
with open(md_file, 'a+') as fo:
fo.write(str)
fo.close(); def handleJson(alinkDic):
# print(str(alinkDic)) # services = alinkDic["services"]# print(services)
for k in alinkDic.keys():
list = ["services","events","properties"]
if(k in list) :
writeFile("## %s\n"%k)
values = alinkDic[k] #list
if(k == "services"):
map(writeServices,values)
elif(k == "events"):
map(writeEvent,values)
else:
map(writeProperty,values) if __name__ == '__main__':
if os.path.exists(json_file):
fileContent = open(json_file).read();
#清空文件
with open(md_file, 'wb+') as file:
file.close();
jsonDic = json.loads(fileContent) # print(open(json_file).read()); //打印json文件
handleJson(jsonDic) # print(json.loads(''.join(open(json_file).readlines()))) //json对象转换成python对象
else:
print 'json 配置文件不存在'

python脚本解析json文件的更多相关文章

  1. python脚本将json文件生成C语言结构体

    1.引言 以前用过python脚本根据excel生成相关C语言代码,其实本质就是文件的读写,主要是逻辑问题,这次尝试将json文件生成C语言的结构体. 2.代码 这是一个json文件,生成这个结构体的 ...

  2. shell脚本解析json文件

    安装jq扩展 下载:jq 根据自己系统下载对应的文件 cp jq-linux64 /usr/bin cd /usr/bin mv jq-linux64 jq chmod +x jq 使用方法 假设有个 ...

  3. 利用Python 脚本生成 .h5 文件 代码

    利用Python 脚本生成 .h5 文件 import os, json, argparse from threading import Thread from Queue import Queue ...

  4. Android--------使用gson解析json文件

    ##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析jso ...

  5. JAVA简便解析json文件

    JAVA简便解析json文件 首先放上我要解析的json文件: { "resultcode":"200", "reason":"S ...

  6. 使用google-gson类库解析json文件

    使用google-gson类库解析json文件 使用JsonParser解析器来解析字符串和输入流,变成json对象 代码如下: public class Readjson { public stat ...

  7. 安卓解析JSON文件

    安卓解析JSON文件 根据JOSN文件的格式,文件只有两种数据,一是对象数据,以 {}为分隔,二是数组,以[]分隔 以下介绍安卓如何解析一个JSON文件,该文件存放在assets目录下,即:asset ...

  8. Java解析JSON文件的方法

    http://blog.sina.com.cn/s/blog_628cc2b70101dydc.html java读取文件的方法 http://www.cnblogs.com/lovebread/ar ...

  9. Logstash:解析 JSON 文件并导入到 Elasticsearch 中

    转载自:https://elasticstack.blog.csdn.net/article/details/114383426 在今天的文章中,我们将详述如何使用 Logstash 来解析 JSON ...

随机推荐

  1. 字符串转Int—parseInt源码实现。

    public static int parseInt(String s, int radix) throws NumberFormatException{ /* * WARNING: This met ...

  2. programmatically detect whenever test run is in debug mode

    if (System.Diagnostics.Debugger.IsAttached)    // code or timeout value when running tests in debug ...

  3. mongodb对数组元素及内嵌文档进行增删改查操作(转)

    from:https://my.oschina.net/132722/blog/168274 比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: &l ...

  4. 4.GDscript(2)关键字,运算符,字面量

    (来源godot官方文档) 关键词 下面是该语言支持的关键字列表.由于关键字是保留字(令牌),它们不能用作标识符.操作符(如 in , not , and 或 or )以及下面列出的内置类型的名称也是 ...

  5. Sitecore 8.1 - 特性和功能

    营销基础 一个新的Sitecore品牌术语取代了体验营销(以前的Sitecore DMS),这是Sitecore体验数据库(xDB)现在所在的位置. Sitecore 7.5和Sitecore 8.0 ...

  6. Teacher Bo (时间复杂度 + 暴力)

    如果你仔细看就会发现有一个数据很重要那就是点的范围,那么这样一来最多只有2 * maxn的不同曼哈顿距离了,这样一看只要暴力一下就可以过了. #include<bits/stdc++.h> ...

  7. Spark学习之路 (二十八)分布式图计算系统

    一.引言 在了解GraphX之前,需要先了解关于通用的分布式图计算框架的两个常见问题:图存储模式和图计算模式. 二.图存储模式 巨型图的存储总体上有边分割和点分割两种存储方式.2013年,GraphL ...

  8. python内置函数zip

    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以 ...

  9. windows与linux ping 显示的ip不一样

    DNS修改了一下域名对应的IP后,域名不能访问了,我在windows下ping一下域名,IP没有变过来,还是老的IP.我在linux下又ping了一下域名,是换过了的.这个问题是由windows下的本 ...

  10. git push跳过用户名和密码认证配置教程

    在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构. 新 ...