如何采集二维json数组
如下有很多这样的json:{"Data": {
"Questions": [
{
"Number": 1,
"Content": "你觉得B真是因为爱Y才和TA结婚的吗?",
"Options": [
{
"Number": 1,
"Content": "是"
},
{
"Number": 2,
"Content": "不是"
}
]
},
{
"Number": 2,
"Content": "B出轨了但依然对Y很好,你认为TA更多是因为害怕,还是愧疚?",
"Options": [
{
"Number": 1,
"Content": "前者"
},
{
"Number": 2,
"Content": "后者"
}
]
},
{
"Number": 3,
"Content": "B重新爱上曾拒绝过自己的人,你觉得TA是出于以下哪种原因?",
"Options": [
{
"Number": 1,
"Content": "余情未了,深埋的感情重新复活"
},
{
"Number": 2,
"Content": "未完成情节,为证明自己的魅力"
}
]
}
]
}
}
如何采集到数据库如下格式:
其中qid是Questions每个数组的Number,num是对应Questions里二维数组Options的Number,content也是Options里的Content Data.Questions.Content 之类的
gongsui 发表于 2020-11-3 10:11
Data.Questions.Content 之类的
要采集二维数组Options里的数据,Questions已经采过了;www Data.Questions.Options.Content gongsui 发表于 2020-11-3 10:23
Data.Questions.Options.Content
这是采集的第一个Options吧,后面的怎么采呢 处理json的函数一般有size属性,你可以先获取size,然后遍历每个cell
Questions
{
Queation.Number
..
int size=Questions.Options.size();//Questions就是指的第一个cell{Number,Content, Options},如果你每个Options里确定只有两个选项,那么size就肯定是2,不用获取了。直接
Questions.Options.Number
...
Questions.Options.Number
...
} myy_ccl 发表于 2020-11-3 10:39
处理json的函数一般有size属性,你可以先获取size,然后遍历每个cell
Questions
{
好的,我试下~ 根据你这个json格式,建立对象类,反序列化就好啊 本帖最后由 Love3295292 于 2020-11-3 11:06 编辑
简单的遍历代码如下,希望能有所帮助:
data = {
"Data": {
"Questions": [
{
"Number": 1,
"Content": "你觉得B真是因为爱Y才和TA结婚的吗?",
"Options": [
{
"Number": 1,
"Content": "是"
},
{
"Number": 2,
"Content": "不是"
}
]
},
{
"Number": 2,
"Content": "B出轨了但依然对Y很好,你认为TA更多是因为害怕,还是愧疚?",
"Options": [
{
"Number": 1,
"Content": "前者"
},
{
"Number": 2,
"Content": "后者"
}
]
},
{
"Number": 3,
"Content": "B重新爱上曾拒绝过自己的人,你觉得TA是出于以下哪种原因?",
"Options": [
{
"Number": 1,
"Content": "余情未了,深埋的感情重新复活"
},
{
"Number": 2,
"Content": "未完成情节,为证明自己的魅力"
}
]
}
]
}
}
if __name__ == '__main__':
questions = data['Data']['Questions']
print("qid\tnum\tcontent")
for question in questions:# 遍历第一层 -> 即Questions
qid = question['Number']
options = question['Options']
for option in options:# 遍历每个即Question中的Options
num = option['Number']
content = option['Content']
print("{}\t{}\t{}".format(qid, num, content))
执行结果示例:
本帖最后由 吾日一梦 于 2020-11-3 12:00 编辑
大概就是这样
JSONObject jsonObject = JSONObject.parseObject(aa);
JSONArray jsonArray = jsonObject.getJSONObject("Data").getJSONArray("Questions");
System.out.println("qid / num / content ");
for (Object object : jsonArray) {
JSONObject json = (JSONObject) object;
String qid = json.getString("Number");
JSONArray array = json.getJSONArray("Options");
for (Object obj : jsonArray) {
JSONObject o = (JSONObject) obj;
String num = o.getString("Number");
String content = o.getString("Content");
System.out.println(qid + " / " + num + " / " + content);
}
}
页:
[1]
2