json,dict数据写入自动排版

import json

with open(‘config.json‘) as f:
    result = json.loads(f.read())

with open(‘testconfig.json‘, ‘wb‘) as f:
    space_count = 0
    last_char = ‘‘
    current = ‘‘
    is_in_double_quote = False
    for current_char in json.dumps(result):
        last_char = current
        current = current_char
        if is_in_double_quote:
            if current_char == ‘"‘:
                if last_char == "\\":
                    f.write(current_char)
                else:
                    is_in_double_quote = not is_in_double_quote
                    f.write(current_char)
            else:
                f.write(current_char)
        else:
            if current_char == ‘"‘:
                is_in_double_quote = not is_in_double_quote
                f.write(current_char)
            elif current_char == ‘{‘:
                space_count += 1
                j = 0
                current_char += ‘\n‘
                while j < space_count:
                    current_char += ‘    ‘
                    j += 1
                f.write(current_char)
            elif current_char == ‘}‘:
                space_count -= 1
                j = 0
                add_space = ‘\n‘
                while j < space_count:
                    add_space += ‘    ‘
                    j += 1
                current_char = add_space + current_char
                f.write(current_char)
            elif current_char == ‘,‘:
                current_char += ‘\n‘
                j = 0
                while j < space_count - 1:
                    current_char += ‘    ‘
                    j += 1
                f.write(current_char + ‘   ‘)
            else:
                f.write(current_char)

思路:

读取当前字符

1. 首先判断是否在 ‘ " ‘ 中

  1.1. 在 ‘ " ‘ 中则判断当前这个字符是否是 ‘ " ‘

    1.1.1. 如果不是则直接写入

    1.1.2. 如果是 ‘ " ‘,则需要判断是否有转义字符 ‘ \ ‘

      1.1.2.1. 如果有则直接写入

      1.1.2.2. 如果没有则退出 ‘ " ‘ 状态

  1.2. 不在 ‘ " ‘ 中,判断当前字符类型

    1.2.1. 当前字符是 ‘ " ‘ ,则进入 ‘ " ‘ 状态

    1.2.2. 当前字符是 ‘ { ‘  ‘ } ‘  ‘ , ‘ 这三个则会进行相应的换行添加空格操作

时间: 2024-08-30 06:17:50

json,dict数据写入自动排版的相关文章

Json的本地写入和读取,也可以方便在开发中数据的调试

不知道小伙伴们,在开发中,数据调试的过程中,尤其是很多状态的情况下调试,是不是总是麻烦后台的小哥改变不同的状态,总感觉这样太麻烦了, 那么就可以,把数据写入到本地,然后去沙盒中,找到这个写入的文件,直接去改变这个文件中的数据.之后就可以不用再网络请求了,可以直接读取这个文件的数据来调试自己的界面了, YXJsonSaveOrLoadTool.h @interface YXJsonSaveOrLoadTool : NSObject +(instancetype)shareTool; //** 写入

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的! 介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很

通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数

Day4 - 迭代器&amp;生成器、装饰器、Json &amp; pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青

Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json &amp; pickle 数据序列化

一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了.所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 要创建一个generator,有很多种

ios网络学习------6 json格式数据的请求处理

#import "MainViewController.h" #import "Video.h" #define kBaseURL @"http://192.168.3.252/~apple" @interface MainViewController ()<UITableViewDataSource, UITableViewDelegate> @property (strong, nonatomic) NSArray *dataLi

Spark处理Json格式数据(Python)

前言 Spark能够自动推断出Json数据集的“数据模式”(Schema),并将它加载为一个SchemaRDD实例.这种“自动”的行为是通过下述两种方法实现的: jsonFile:从一个文件目录中加载数据,这个目录中的文件的每一行均为一个JSON字符串(如果JSON字符串“跨行”,则可能导致解析错误): jsonRDD:从一个已经存在的RDD中加载数据,这个RDD中的每一个元素均为一个JSON字符串: 这里我们仅讨论jsonFile的场景,jsonRDD处理方法类似. 典型示例 JSON的数据模

Python3 json &amp;pickle 数据序列化

json 所有语言通用的信息交换格式 json.dumps()将list列表.dict字典.元组.函数等对象转换为可以存储的字符格式存入文件 json.dump(数据对象名,已以写方式打开的对象) 直接写入,省略f.write()写法 这个过程称之为"序列化" json.loads("已读文件对象")将存入的数据类型列表.字典.函数等,读出来.还原为原来的数据类型. json.load("已打开文件对象")  这个过程叫做反序列化   pickl

JSON格式数据

1. 基础知识 1. 什么是JSON格式? JSON格式是现在网站数据交互的标准数据格式,写入标准. 取代原来的XML:符合JS原生语法,可以被直接解析,不需要额外的解析文件. 书写简单,一目了然 2. 合格的JSON数据 1.对象{...} 1)属性名必须是双引号的字符串:不能是Symbol类型:会被忽略 2)属性值不能是Date类型.函数.正则表达式.undefined.NaN.Infinity.-Infinity JSON.stringify(value)的作用是将值转化为JSON的字符串