美文网首页
做一个的json转换为yaml网页

做一个的json转换为yaml网页

作者: c4a1d989518e | 来源:发表于2017-09-16 19:32 被阅读825次

    做的功能类似这个网站
    http://www.awesometool.org/Encode/YAML2JSON
    我的是写成成yaml格式的文件。
    做这个功能,当初的需求是这样:之前我把用例用json文件保存,但是后来,我在Django中更改json数据,然后在写回json文件,发现原来的格式就会消失,变成dict格式,非常不利用阅读。后来发现了yaml格式,发现yaml格式是现在比较流行的用来写配置文件或者用例的格式。而且写起来非常利于阅读。关于yaml格式,可以看阮一峰的博客YAML 语言教程

    原本以为比较简单,等到做的时候,踩了一些坑。记录一下这些坑。

    1.如何去除制表符,换行符\n\t\t\t等等

    如果我在前端网页的输入框中输入json格式的额数据,如:

    
    
        { "people": [
    
        { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
    
        { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
    
        { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
    
        ]}
    
    

    我用Django通过request.POST[]读取过来后,发现打印出来是包含各种换行符和制表符的,如\n\t\t\t\t,这样的数据根本就没法用,我最开始考虑的是否是前端输入框的问题,找了半天,没找到好的解决方案。后来又转头去思考用replace和strip()方法来去除这些符号。发现即使转换为str类型后,这两个方法也没有效果。后来我想起来我之前修改json文件,然后写入后,会自动转换为没有符号的dict类型。这不正是我要的?重要思考来源
    https://stackoverflow.com/questions/15941996/dump-json-into-yaml

    解决方法
    d=json.JSONEncoder().encode(incase)
    f=json.loads(d)                                                                                      
    j=json.dumps(f)                                                                                                 
    h=json.loads(j)
    
    • 其中的第一行是python把字典转换成json字符串
    • json.loads是将json字符串转化为dict字典
    • json.dumps是将dict转换为json字符串。
    • 这时j就已经没有其他污染符号了。最后一步就是把json转换为dict,因为写入yaml文件要用字典格式。

    incase是我从网页读取的json数据,有一个重要的知识点是json中的数据与dict字典中数据一个重要的不同点是,json中的数据是用双引号的。单引号转双引号的代码为

    dict = {'as': 'df', 'zx': 'cv'}
    dict = str(dict).replace('\'','\"')
    

    其实,这行代码用不到。

    2.写入yaml文件,并用yaml格式。

    如果直接用

    yaml.dump(dict , f.yaml)
    

    这时写入yaml文件,查看格式,并不是yaml格式,还是挤在一起的dict。

    解决方法

    这时就要用这个写法

    yaml.dump(dict , f.yaml ,default_flow_style=False)
    

    3.错误!!python/unicode

    如果用dump那样写在yaml文件,查看写入,就会有这个报错写入yaml文件

    解决方法

    yaml.dump() 换为yaml.safe_dump

    相关文章

      网友评论

          本文标题:做一个的json转换为yaml网页

          本文链接:https://www.haomeiwen.com/subject/saassxtx.html