
JSON 文件:这是其中的两条记录,出现{}嵌套{},
感觉应该把外面那个{}存一个table,然后把嵌套的user那个{}单独拿出来放另一个table,
但是解析JSON的时候,怎么知道哪个是外面的{}是哪个是里面的{}啊。而且两个table怎么关联啊
好难啊。。。。
{“text”:“Photo: seco http://tumblr.com/xjd1bnfg4w”,“id_str”:“28965133095010304”,“id”:28965133095010304,“created_at”:“Sun Jan 23 24:00:00 +0000 2011”,“retweeted”:false,“retweet_count”:0,“favorited”:false,“user”:{“id_str”:“45378162”,“id”:45378162,“screen_name”:“Cosmic_dog”,“name”:“Pablo”},“
requested_id”:28965133095010304}
{“text”:“Jam belapa cekalang? Akuh males mandi, nantian ajadah mandinyah .”,“id_str”:“28965133204066304”,“id”:28965133204066304,“created_at”:“Sun Jan 23 24:00:00 +0000 2011”,“retweeted”:false,“retweet_count”:0,“favorited”:false,“user”:{“id_str”:“129102416”,“id”:129102416,“screen_name”:“ivanagho”,“name”:“Ivana”},“
requested_id”:28965133204066304}
1 mgcnrx11 2014-08-25 20:52:36 +08:00 |
2 young 2014-08-25 20:53:05 +08:00 这不就是二维数组吗,难吗? 我猜楼主没有实际decode的看下 |
4 mgcnrx11 2014-08-25 20:58:30 +08:00 这里有一篇解释http://www.infoq.com/cn/articles/HIgh-Performance-Parsers-in-Java 当然,其实LZ直接找个工具把JSON转为Object就可以了 |
5 starsoi 2014-08-25 21:21:37 +08:00 直接用json.loads就行了啊 from __future__ import print_function s = """ {"text":"Photo: seco http://tumblr.com/xjd1bnfg4w","id_str":"28965133095010304","id":28965133095010304,"created_at":"Sun Jan 23 24:00:00 +0000 2011","retweeted":false,"retweet_count":0,"favorited":false,"user":{"id_str":"45378162","id":45378162,"screen_name":"Cosmic_dog","name":"Pablo"},"requested_id":28965133095010304} """ from json import loads row = loads(s) for k, v in row.items(): if isinstance(v, dict): print(k+': ') for ki, vi in v.items(): print(' '+ki+': ', vi) else: print(k+': ', v) |
6 mhycy 2014-08-25 21:24:14 +08:00 ....随便找个对JSON友好的语言解码一下重新生成数据不就完了 Python JS PHP 随便选啊 |
7 meteor2013 OP @mhycy 这个办法听起来比较愉快。 |
8 kisshere 2014-08-25 22:14:49 +08:00 为啥不用json_decode函数生成array,再遍历数组存入mysql |
9 sheaven 2014-08-25 22:40:53 +08:00 如果可以存mongodb更方便 |
10 hepin1989 2014-08-25 22:51:18 +08:00 里面那个取的话,比如以play-json为列,就是val userNode = jsonvalue \ "user", 如果用jsonnode的话,就是 JsonNode userNode = jsonvalue.getNode("user") 不难的哈 |
11 Biwood 2014-08-25 23:28:38 +08:00 不知道为什么要分开存储,{}套括号套{}不正是JSON特色嘛,如果在Javascript里面,操作起来简直是得心应手,要获取用户id就直接data.user.id,这样解析起来还蛋疼吗 |
12 chigco 2014-08-26 00:09:39 +08:00 好像没怎么难啊。转换成对象,做关联。 |
13 Mutoo 2014-08-26 00:12:59 +08:00 看这场景,应该是 mongodb 的活儿。 |
14 ffffwh 2014-08-26 04:50:46 +08:00 |
15 nine 2014-08-26 09:04:02 +08:00 我很好奇,你用的啥语言 ,没有解析json的库? php json_decode(...) python import json json.loads(...) ruby require 'json' JSON::parse(...) 嵌套的user 放到user表里不就行了? |
16 hzz780 2014-08-26 10:28:57 +08:00 我觉得,不论用什么,json都有自己的格式,key-value,如果是自己写,暴力点,对每一层进行判断,{ "key1":"value","key2":[{}{}] }按顺序遍历,然后检查是否有儿子没有的话直接进数据库,,有的话进去,一步一步的加数据库……码农渣,勿喷。 |
17 withinthefog 2014-08-26 11:20:52 +08:00 var data = require('./data.json'); _.forEach(data,function(item) { user = item.user; delete item.user; WhateverItemModelYouUse = new WhateverItemModel(item); WhateverItemModelYouUse.save(function(newItem){ user.item_id = newItem.id; WhateverUserModelYouUse = new WhateverUserModelYouUse(use); WhateverUserModelYouUse.save(function(){ console.log('done!'); }); }) // other staff... }) 写完发现是python节点.... |