从MongoDB里面取得json格式的数据,然后存为本地的json文件,然后再从json读取变为dict

帮宣传下彩印网(www.caiyin.com) 有印刷,广告等等方面的需求就找这个网站吧,没错的。

天气预报在MongoDB中的天气预报的存储方式是:

/* 1 */
{
    "_id" : ObjectId("5a72ae6e6bd36a9f61e8ce3d"),
    "city" : "北京",
    "info" : [
        {
            "index_of_living" : [
                {
                    "assess" : "最弱",
                    "content" : "辐射弱,涂擦SPF8-12防晒护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "较易波动",
                    "content" : "血糖较易波动,注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "较易发",
                    "content" : "温差较大,较易感冒,注意防护。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "冷",
                    "content" : "建议着棉衣加羊毛衫等冬季服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "中",
                    "content" : "易感人群应适当减少室外活动。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "5℃",
            "weather" : "晴转多云转晴",
            "time" : "1日(今天)",
            "wind" : "<3级转3-4级",
            "V" : "-7℃"
        },
        {
            "index_of_living" : [
                {
                    "assess" : "弱",
                    "content" : "辐射较弱,涂擦SPF12-15、PA+护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "易波动",
                    "content" : "气温多变,血糖易波动,请注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "极易发",
                    "content" : "强降温,天气寒冷,极易发生感冒。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "寒冷",
                    "content" : "建议着厚羽绒服等隆冬服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "良",
                    "content" : "气象条件有利于空气污染物扩散。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "-1℃",
            "weather" : "晴",
            "time" : "2日(明天)",
            "wind" : "3-4级转<3级",
            "V" : "-9℃"
        },
        {
            "index_of_living" : [
                {
                    "assess" : "最弱",
                    "content" : "辐射弱,涂擦SPF8-12防晒护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "易波动",
                    "content" : "血糖易波动,注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "较易发",
                    "content" : "天较凉,增加衣服,注意防护。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "冷",
                    "content" : "建议着棉衣加羊毛衫等冬季服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "中",
                    "content" : "易感人群应适当减少室外活动。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "0℃",
            "weather" : "多云",
            "time" : "3日(后天)",
            "wind" : "<3级",
            "V" : "-9℃"
        },
        {
            "index_of_living" : [
                {
                    "assess" : "弱",
                    "content" : "辐射较弱,涂擦SPF12-15、PA+护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "易波动",
                    "content" : "血糖易波动,注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "较易发",
                    "content" : "天较凉,增加衣服,注意防护。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "冷",
                    "content" : "建议着棉衣加羊毛衫等冬季服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "中",
                    "content" : "易感人群应适当减少室外活动。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "1℃",
            "weather" : "晴",
            "time" : "4日(周日)",
            "wind" : "<3级",
            "V" : "-8℃"
        },
        {
            "index_of_living" : [
                {
                    "assess" : "弱",
                    "content" : "辐射较弱,涂擦SPF12-15、PA+护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "易波动",
                    "content" : "血糖易波动,注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "较易发",
                    "content" : "天较凉,增加衣服,注意防护。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "冷",
                    "content" : "建议着棉衣加羊毛衫等冬季服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "中",
                    "content" : "易感人群应适当减少室外活动。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "0℃",
            "weather" : "晴",
            "time" : "5日(周一)",
            "wind" : "<3级",
            "V" : "-10℃"
        },
        {
            "index_of_living" : [
                {
                    "assess" : "弱",
                    "content" : "辐射较弱,涂擦SPF12-15、PA+护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "较易波动",
                    "content" : "血糖较易波动,注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "较易发",
                    "content" : "天较凉,增加衣服,注意防护。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "冷",
                    "content" : "建议着棉衣加羊毛衫等冬季服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "中",
                    "content" : "易感人群应适当减少室外活动。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "2℃",
            "weather" : "晴",
            "time" : "6日(周二)",
            "wind" : "<3级",
            "V" : "-8℃"
        },
        {
            "index_of_living" : [
                {
                    "assess" : "弱",
                    "content" : "辐射较弱,涂擦SPF12-15、PA+护肤品。",
                    "name" : "紫外线指数"
                },
                {
                    "assess" : "较易波动",
                    "content" : "血糖较易波动,注意监测。",
                    "name" : "健臻·血糖指数"
                },
                {
                    "assess" : "较易发",
                    "content" : "天较凉,增加衣服,注意防护。",
                    "name" : "感冒指数"
                },
                {
                    "assess" : "冷",
                    "content" : "建议着棉衣加羊毛衫等冬季服装。",
                    "name" : "穿衣指数"
                },
                {
                    "assess" : "较适宜",
                    "content" : "无雨且风力较小,易保持清洁度。",
                    "name" : "洗车指数"
                },
                {
                    "assess" : "中",
                    "content" : "易感人群应适当减少室外活动。",
                    "name" : "空气污染扩散指数"
                }
            ],
            "K" : "3℃",
            "weather" : "晴转多云",
            "time" : "7日(周三)",
            "wind" : "<3级",
            "V" : "-8℃"
        }
    ]
}

就是每个地方的未来的七天的天气

import json
import pymongo
#建立连接
client = pymongo.MongoClient("mongodb://root:[email protected]:27017")
#指定数据库
db = client[‘weather‘]
#指定集合
collection= db[‘weather_tian‘]
#指定要查询的内容
result= collection.find()
print(‘type result===‘,type(result))

fp = open(‘./output_weather.json‘,‘a+‘)
cal_index =0
for i in result:
    cal_index = cal_index +1
    if cal_index == 4:  #先打个三个地区出来看看情况
        break
    #print(‘type i =‘,type(i))
    i.pop(‘_id‘) #不如这个key和value不去掉的话,会报ObjectId错误的问题,因为这个是MongoDB里面的类,json不认识,你的自定定义这个类来处理
    j = json.dumps(i,ensure_ascii=False)
    fp.write(j)
    fp.write(‘\n‘) #这样每个地区的未来七天的天气情况就写为一行了

fp.close()

这样就在本地存了个json文件了。有三个地区的天气。

  接下来我们是从这个json文件读入,变成dict,代码如下

import json
import time

def json_file_to_dict():
    ofile =  open(‘./output_weather.json‘)
    for  line in ofile.readlines():
        #print(line)
        print(type(line))
        afterjson = json.loads(line)
        print(afterjson[‘city‘]) #其中city是dict中的某个key

if __name__ == ‘__main__‘:
    json_file_to_dict()

原文地址:https://www.cnblogs.com/www-caiyin-com/p/8407029.html

时间: 2024-11-14 17:12:43

从MongoDB里面取得json格式的数据,然后存为本地的json文件,然后再从json读取变为dict的相关文章

SQLyog-直接导出JSON格式的数据

      前言:以前做过的一个项目,有这样的一个需求使用搜索引擎来查询对应的区域信息,不过区域信息要先导出来,并且数据格式是JSON格式的,在程序中能实现这个需求,不过下面的这种方法更加的简单,通过SQL+SQLyog工具的特点直接将区域信息以JSON格式的形式导出来! 1:区域表的结构信息 2:区域关系表的结构信息 3:这个SQL语句是本次博文的核心,就是用他来拼出JSON格式的数据的,当然,仔细的看一下的话也比较简单,只是这种思路值得小记一笔 SELECT '{"regionId"

ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性对token进行验证,并通过时间戳的方式统一处理接收与返回的时间格式. 请求Json格式: { "Cmd": "login", "Token": "", "PageNo": 0, "OnePageNu

hive中导入json格式的数据(hive分区表)

hive中建立外部分区表,外部数据格式是json的如何导入呢? json格式的数据表不必含有分区字段,只需要在hdfs目录结构中体现出分区就可以了 This is all according to this guide: http://blog.cloudera.com/blog/2012/12/how-to-use-a-serde-in-apache-hive/ 1 hive> ADD JAR /home/hadoop/hive-serdes-1.0-SNAPSHOT.jar; 2 Added

Android Volley获取json格式的数据

为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和json对象数组等.当然,java本身也有获取json对象的方法,然而为了更好地适应移动互联网,google专门为其做了特殊的优化,因而应该尽可能地使用Volley库. Volley官方文档:https://developer.android.com/training/volley/index.htm

将Array格式的数据解析成JSON格式的数据

在编程的过程中,数据的传输格式如何,会影响开发的效率和后期代码的维护, 并且现在许多的js中支持了JSON格式的数据, 比如angular.nodejs.本篇文章主要讲解Array(数组)形式数据的解析.其它格式的数据会在后续的文章中进行书写. (1)定义一个解析Array的类JSONArray. public class JSONArray { @SuppressWarnings("unchecked") public static String toJSONString(List

使用JSONObject类来生成json格式的数据

使用map构建json格式的数据 使用java bean来构建json对象

mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler

mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler mybatis 比 ibatis 改进了很多,特别是支持了注解,支持了plugin inteceptor,也给开发者带来了更多的灵活性,相比其他ORM,我还是挺喜欢mybatis的. 闲言碎语不要讲,今天研究了下mybatis的typeHandler: 先看这样一张表(postgresql) create table user ( id serial not null

在IE中MVC控制器中返回JSON格式的数据时提示下载

最近做项目时,视图中用jquery.form.js异步提交表单时,接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("#formDoUpload").ajaxSubmit({                    type: "POST",                    url: "/controller/action/",  

PHP接收JSON格式的数据

在API服务中,目前流行采用json形式来交互. 给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据. 接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型.因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类

mysql模糊查询表里的json格式的数据-177

mysql里查询 json 数据 1.mysql里有个字段存储的是json格式的数据, 2.现在需要从页面传递参数到php再进行搜索匹配关键字, 3.将关键字页json_encode后,去like匹配这个字段,匹配不到 解决方案: 1.只针对中文搜索,存的数据一样是json,josn里面的中文一般是unicode编码的,将关键字编码一下. 2.在mysql里,"\" 是需要转义的.两种解决办法: a)因此使用"\\"来查询,数据依然是空.(mysql斜杆转义之后,会