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的看下 |
3
rrfeng 2014-08-25 20:53:38 +08:00
不应该先根据内容设计好表结构再来解析吗。。
|
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节点.... |