热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实训日记【3】数据准备java处理json

负责爬虫模块的同学丢给了我这样的一些json数据,从中取两条放在这里。[{caiming:藜麦鸡肉丸,chengpin:http:

负责爬虫模块的同学丢给了我这样的一些json数据,从中取两条放在这里。

[{
        "caiming": "藜麦鸡肉丸",
        "chengpin": "http://s1.st.meishij.net/r/178/85/5833928/s5833928_151843048575508.jpg",
        "biaoqian": ["清热解毒", "美容养颜", "延年益寿", "抵抗力", "降糖", "保护视力", "助消化", "养肾", "消食"],
        "gongyi": "蒸",
        "kouwei": "咸鲜味",
        "nandu": "初级入门",
        "renshu": "未知",
        "zhunbeishijian": "60分钟",
        "pengrenshijian": "<30分钟",
        "zhuliao": { "鸡蛋清": "35克", "胡萝卜": "20克", "鸡肉": "100克", "淀粉": "15克", "三色藜麦": "10克" },
        "fuliao": { "香菇虾皮粉": "2克", "香葱": "6克" },
        "guocheng": { "1": ["参考月龄:12个月以上,对食材不过敏的宝宝", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843079008009.jpg"], "2": ["1. 三色藜麦倒入碗中,加入清水,浸泡2个小时,藜麦是复合淀粉高膳食纤维食物,煮之前需要较长时间吸足水份才容易变软。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843083766525.jpg"], "3": [" 浸泡好的藜麦倒入锅中,煮15分钟。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843085640683.jpg"], "4": [" 稍晾凉,过滤掉水分。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843088125481.jpg"], "5": [" 香葱切成末。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843089792645.jpg"], "6": ["胡萝卜洗净削皮,切成小丁。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843091952558.jpg"], "7": ["鸡胸肉去掉表面白色的筋膜,洗净切成小丁。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843093628392.jpg"], "8": ["切好的鸡胸肉丁,倒入料理机中,加入胡萝卜丁,倒入提前准备好的蛋清。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843121331477.jpg"], "9": [" 搅打成细腻的胡萝卜鸡肉泥, 给宝宝做丸子的时候,最好要多搅拌两次,或者搅拌的时间长一些,让肉馅更细腻一些。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843124570656.gif"], "10": ["搅打细腻的肉馅倒入碗中,倒入淀粉和香菇虾皮粉。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843127297042.jpg"], "11": ["加入香葱和煮好的三色藜麦,用筷子搅拌均匀。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843129682707.gif"], "12": ["加入少许的油。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843132038059.jpg"], "13": ["接着把调好的鸡肉泥放入裱花袋中,裱花袋也可以用厚一点的保鲜袋代替,剪开一个手指那么大的口子。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843132935327.jpg"], "14": ["锅中倒上水,烧开后转小火让水呈微沸的状态,鸡肉泥挤在小勺里后再放入锅中。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843135040926.gif"], "15": ["依次挤入小丸子,继续煮5分钟,轻轻搅动,至小丸子全部浮起 。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843137018103.gif"], "16": [". 煮好盛出,放入保鲜盒中密封,冰箱冷藏可以保存3天左右,冷冻可以保存7天左右。", "http://s1.st.meishij.net/rs/178/85/5833928/n5833928_151843138719725.jpg"] } },
    {
        "caiming": "清蒸豆豉石斑鱼",
        "chengpin": "http://s1.st.meishij.net/r/68/166/12416568/s12416568_151764937493567.jpg",
        "biaoqian": ["散瘀止痛", "开胃"],
        "gongyi": "蒸",
        "kouwei": "家常味",
        "nandu": "",
        "renshu": "",
        "zhunbeishijian": "",
        "pengrenshijian": "<30分钟",
        "zhuliao": { "石斑鱼": "一条" },
        "fuliao": { "豆豉": "适量", "": "适量", "老姜": "适量", "料酒": "适量", "酱油": "适量", "芡粉": "少量", "食盐": "少量", "花椒": "少量" },
        "guocheng": { "1": ["1石斑鱼洗净,剪去锋利的鱼鳍,去鳞去腮去内脏,鱼背上横划几刀,少许料酒、少许食盐,加适量葱段、老姜、花椒几颗腌制15分钟,鱼肚子里也要放姜葱。", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937426090.jpg"], "2": ["2腌鱼等待时,先调汁备用:蒸鱼酱油+姜+葱+芡粉+冷开水", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937693307.jpg"], "3": ["3锅内入水,烧开后,鱼下锅,偏大火蒸10分钟后,快递倒掉盘中多余的蒸汽水汁", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937756041.jpg"], "4": ["4淋入酱油汤汁和豆豉,大火再蒸5分钟(备注:豆豉准备好,若买的是无油的生豆豉,建议可加些油先下锅炒一下。)", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937864325.jpg"], "5": ["5关火,放葱丝,起锅", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937987694.jpg"], "6": ["6上桌", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764938022106.jpg"] } }]

分析

可以看到里面的属性其实还是挺复杂的,不过我们理清楚里面的关系,取出想要的数据还是非常方便的。
一共有菜名、成品、标签(数组)、工艺、口味、难度、人数、准备时间、烹饪时间、主料(字典)、辅料(字典)、过程(字典,其中value为数组)这些属性,其中是数组或者字典的已经在小括号里面标注出来了。

Maven相关安装

在pom.xml里面的dependencies标签下,加入

        <dependency>
            <groupId>net.sf.json-libgroupId>
            <artifactId>json-libartifactId>
            <version>2.4version>
            <classifier>jdk15classifier>
        dependency>

标签分析与处理

1.无嵌套数组及字典的key value类型

那么对于一般的key value类型的数据,如菜名,处理起来非常方便。在将json放入JSONObject中后,调用get(“字段名”)即可。
例如System.out.println("[" + i + "]name=" + jsonObject.get("caiming"));

2.字典类型

使用遍历器iterator
如对fuliao

           JSONObject fuliaoarr = (JSONObject) jsonObject.get("fuliao");
            Iterator iterator = fuliaoarr.keys();
            while(iterator.hasNext()){
                String key = (String) iterator.next();
                String value = fuliaoarr.getString(key);
                System.out.println("key: "+key+"value: "+value);
            }

即可。

3.字典嵌套数组类型

        "guocheng": {
            "1": ["1石斑鱼洗净,剪去锋利的鱼鳍,去鳞去腮去内脏,鱼背上横划几刀,少许料酒、少许食盐,加适量葱段、老姜、花椒几颗腌制15分钟,鱼肚子里也要放姜葱。", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937426090.jpg"],
            "2": ["2腌鱼等待时,先调汁备用:蒸鱼酱油+姜+葱+芡粉+冷开水", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937693307.jpg"],
            "3": ["3锅内入水,烧开后,鱼下锅,偏大火蒸10分钟后,快递倒掉盘中多余的蒸汽水汁", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937756041.jpg"],
            "4": ["4淋入酱油汤汁和豆豉,大火再蒸5分钟(备注:豆豉准备好,若买的是无油的生豆豉,建议可加些油先下锅炒一下。)", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937864325.jpg"],
            "5": ["5关火,放葱丝,起锅", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764937987694.jpg"],
            "6": ["6上桌", "http://s1.st.meishij.net/rs/68/166/12416568/n12416568_151764938022106.jpg"]
        }

这个是步骤序号:[步骤内容,步骤图片]是比较复杂的了,但是我们不要急,一层一层将其剥开即可。
1)首先使用iterator获得字典的所有key
JSONObject guochengarr = (JSONObject) jsonObject.get("guocheng");
2)随后遍历每一个步骤,将key的内容转为一个JSONArray对象


while(iterator.hasNext()){
                String key = (String) iterator.next();
                JSONArray json = JSONArray.fromObject(fuliaoarr.getString(key));
                ...
            }

3)遍历数组内容,附上全代码

JSONObject guochengarr = (JSONObject) jsonObject.get("guocheng");
while(iterator.hasNext()){
                String key = (String) iterator.next();
                JSONArray json = JSONArray.fromObject(fuliaoarr.getString(key));
                if(json.size()>0){
                    for(int j=0;jget(j);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
                        System.out.println(content);  // 得到 每个对象中的属性值
                    }
                }
            }

推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
author-avatar
凌亂的回譩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有