吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1198|回复: 12
收起左侧

[求助] 如何采集二维json数组

[复制链接]
Zihao88 发表于 2020-11-3 10:05
如下有很多这样的json:
[PHP] 纯文本查看 复制代码
{
    "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": "未完成情节,为证明自己的魅力"
                    }
                ]
            }
        ]
    }
}

如何采集到数据库如下格式:
1111.png
其中qid是Questions每个数组的Number,num是对应Questions里二维数组Options的Number,content也是Options里的Content

免费评分

参与人数 1热心值 +1 收起 理由
yanyyuan + 1 学习一下

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

gongsui 发表于 2020-11-3 10:11
Data.Questions[0].Content   之类的
 楼主| Zihao88 发表于 2020-11-3 10:13
gongsui 发表于 2020-11-3 10:11
Data.Questions[0].Content   之类的

要采集二维数组Options里的数据,Questions已经采过了
gongsui 发表于 2020-11-3 10:23
 楼主| Zihao88 发表于 2020-11-3 10:25
gongsui 发表于 2020-11-3 10:23
Data.Questions[0].Options[0].Content

这是采集的第一个Options吧,后面的怎么采呢
myy_ccl 发表于 2020-11-3 10:39
处理json的函数一般有size属性,你可以先获取size,然后遍历每个cell
Questions[i]
{
Queation[i].Number
..
int size=Questions[i].Options.size();//Questions[i]就是指的第一个cell{Number,Content, Options},如果你每个Options里确定只有两个选项,那么size就肯定是2,不用获取了。直接
Questions[i].Options[0].Number
...
Questions[i].Options[1].Number
...

}
 楼主| Zihao88 发表于 2020-11-3 10:52
myy_ccl 发表于 2020-11-3 10:39
处理json的函数一般有size属性,你可以先获取size,然后遍历每个cell
Questions
{

好的,我试下~
sweet_love 发表于 2020-11-3 11:04
根据你这个json格式,建立对象类,反序列化就好啊
Love3295292 发表于 2020-11-3 11:04
本帖最后由 Love3295292 于 2020-11-3 11:06 编辑

简单的遍历代码如下,希望能有所帮助:
[Python] 纯文本查看 复制代码
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))


执行结果示例:

运行结果示例

运行结果示例

免费评分

参与人数 1热心值 +1 收起 理由
Zihao88 + 1 谢谢@Thanks!

查看全部评分

吾日一梦 发表于 2020-11-3 11:47
本帖最后由 吾日一梦 于 2020-11-3 12:00 编辑

大概就是这样

[Java] 纯文本查看 复制代码
 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);
            }
        }


QQ截图20201103120014.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表