>
有关的知识点可能过于简单,但是又不得不去写,想要养成写博客的习惯,不仅仅是对自己知识的总结,也是对耐力的磨练,虽然目前学的东西很浅,但是随着以后的深入不断去补充相关的知识,使自己的文章更加精炼。
最近在做一个网络请求的demo,用到了JSON,做一次总结。
一、JSON基础知识点?
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
“ “ 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
二、Json解析
第一个 “size” 键的值为 9.5,由此可以判断出 该值属于数值类型,因为值周围没有引号。
第二个 “wide” 键的值为 true,不带引号。这 表示该值属于布尔值。如果数字周围有引号,则表示其为字符串。也就是我们在第三个键值对中找到的字符串。
第三个 “country-of-origin”键的值为 “usa”。
第四个键是 “style”,其值表示为对象,因为两侧有大括号。
在 style 对象内部,我们可以找到两个嵌套键/值对:一个为 catergories,一个为color。其实 catergories 的值是一个数组,“boot” 和 “winklepicker”被包含在中括号内组成一个数组。 按照这种方式,通过使用对象和数组,可以嵌套几组值, 随后便可在这些容器中放入不同的数据类型。
如果我们请求的数据很多比如这个URL;
我们就需要JSON整理格式化,推荐一个格式网站
三、如何获取JSON中的数据
通过这个demo,先说明一下这个demo是在给定的 JSON ,下面的String中就是我们
需要解析的JSON
通过上面给的JSON格式工具,我们做一些操作取出 “features”对象中的一些值。
便于理解贴一张图吧
下面的代码只是贴出必要的数据,方便需要运行看效果的同学直接拿来用
demo:
|
|
上面获取出来的值可有用 log 或者 Toast 显示出来
四、JSON 数据中时间格式的转换
可以看出来 JSON 中 “time” 键值为毫秒数,我们便于观看需要转换为我们熟悉的格式,所以我们用到了 SimpleDateFormat类,基本格式是:
|
|
如果要处理数值的格式我们用DecimalFormat类,用法很简单,如:
更详细的可以查看 DecimalFormat 格式方法),里面也有格式图,方便理解;
五、字符串的操控
你也可以参阅文档中的CharSequence。CharSequence 是一组字符,字符串是一种更具体的 CharSequence (String 类是 CharSequence 类的 扩展类)。如果某个方法要求使用 CharSequence 作为输入,你可以 传递一个字符串。 以下是一些可以在 String 对象上调用的其他方法:
length()) - 返回字符串中的 字符数
contains(CharSequence cs)) - 根据 原始字符串中是否包含输入 CharSequence (或输入 String)返回 true 或 false
indexOf(String string)) - 返回输入 String 首次在原始 String 中出现的位置的索引,如果 原始 String 中不存在输入 String,则返回 -1
split(String string)) - 根据输入 String 中 指定的位置对原始 String 进行拆分, 并返回包含拆分后 String 部分的数组。
substring(int start, int end)) - 返回 一个新的 String,该 String 为从开始索引到结束索引 之间的内容(包括开始索引但不包括结束索引)。
demo
demo 中,我们需要拆分“place” 中的数据,其中以“of”为划分
|
|
更多的操作需要具体要求修改,答案不唯一,有兴趣可以把其他的几个方法的尝试一下