zoukankan      html  css  js  c++  java
  • json操作相关记录

    json是javascript衍生的数据表示法,现在许多数据的处理都使用json.

    平时用到的与json结构相似的有很多,如mongodb数据库,python的字典等.核心思想就是键值对.

    json的基本数据结构包括对象和数组,对象用{},里面是键值对,数组用[],可包含多个对象;json在python中解析后,对象出来是字典,数组是列表.

    json简单操作:

    ----------格式化----------

    windows可以用notepad++,有json Viewer插件,可以点击"插件(P)"->"Plugin Manager"->"Show Plugin Manager".在弹出的窗口里面找到"JSON Viewer"安装;

    没有的话需要下载安装,地址  https://sourceforge.net/projects/nppjsonviewer/  .将下载好的文件解压,找到  NPPJSONViewer.dll  这个文件,拷贝到notepad++的plugins文件夹下,

    例如我的notepad++安装在C盘,我的插件地址是"C:Program FilesNotepad++plugins".

    安装好该插件后将json文件用notepad++打开.

    先选中需要格式化的json文本(一定要选中),如果格式化整个文件直接ctrl+a就好了.

    然后依次点击"插件(P)"->"JSON Viewer"->"Format JSON ",即可看到文本格式的变化,需要保存的记得ctrl+s.

     

     

    ubuntu可以用jq命令,需要先安装$apt install jq.

    需要查看某个json文件的格式化的,直接在命令行使用jq . [filename]

     

    也可以直接使用网页解析json,访问json.cn(或者其他在线解析网站),将需要格式化的文本复制到框框即可.

    ----------数据处理----------

    mongodb直接导入json文件
    mongoimport -d [database] -c [Collection] <file>

    其中database是数据库,collection是集合,file是文件名.

    例如,我将test.json导入数据库test中的mytest集合:

    使用--jsonArray是因为我的文件是json数组,直接导入会报错;最外层是对象的json文件不用--jsonArray即可导入.

    数据库和集合都可以是不存在的,mongo会自动创建.

     

    python处理json数据.

    在数据传输中json都是纯文本的形式.在python中即作为字符串存取.

    使用json模块的loads和dumps转换json.

    # /usr/bin/python
    # encoding: utf-8
    
    import json
    
    with open('test.json','r') as f:
        jsn = f.read()
    
    # 将json字符串转换为对应的列表或字典
    jsn = json.loads(jsn)
    print type(jsn)
    print jsn
    
    # 将对象转换为字符串
    str = json.dumps(jsn)
    print type(str)
    print str

     

    ubuntu中仍使用上文所说的jq命令处理json文件,安装好后,输入jq可查看使用方法.

    基本用法:

    jq [options] <jq filter> [file...]

    基本的filter有  

      .    表示对象

      [ ]     表示数组

      .key  可以通过key输出值

    这些都会直接输出到屏幕,要输出到文件,使用 '>' 定向到文件即可

    如,将test.json的name字段输出到name文件中: jq .[].name test.json > name

     

    json更适用于已知结构的数据.在使用中比较方便,结合mongodb,效率可观.

    在python的使用中仍会遇到一些格式上的问题(特别是python2),写代码时需多多注意.

  • 相关阅读:
    JVM基础(一)—— 运行时内存结构
    SQL if 和 case when查询示例
    SQL分组聚合查询
    My music
    DataX增量同步到ADB ADS时报错
    shell find的用法
    pycharm安装
    在两个库中查找出差异明细
    docker下安装centos
    升级RDS8.0遇到的问题
  • 原文地址:https://www.cnblogs.com/masako/p/6867583.html
Copyright © 2011-2022 走看看