JSON学习笔记
来源:互联网 发布:广州淘宝拍照的地方 编辑:程序博客网 时间:2024/06/11 18:24
文本官方网站,欢迎大家吐槽~
有关的知识点可能过于简单,但是又不得不去写,想要养成写博客的习惯,不仅仅是对自己知识的总结,也是对耐力的磨练,虽然目前学的东西很浅,但是随着以后的深入不断去补充相关的知识,使自己的文章更加精炼。
最近在做一个网络请求的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:
String部分参考,因为CSDN支持markdown不是特别好
//创建一个JSON对象,并传入JSON格式的数据 JSONObject root = new JSONObject(SAMPLE_JSON_RESPONSE); //获取数组对象“features” 从图中可以看出“features”后面是中括号 JSONArray featureArray=root.getJSONArray("features"); //这个循环只是获取每个数组中相同的对象 for(int i=0;i<featureArray.length();i++){ //获取第 i 个数组中的数据 JSONObject earthquake= featureArray.getJSONObject(i); //获取该对象中的“properties”JSON对象 JSONObject properties=earthquake.getJSONObject("properties"); //获取键为“mag”的值 Double mag= properties.getDouble("mag"); //获取键为“place”的值 String place= properties.getString("place"); //获取键为“time”的值 Long time= Long.valueOf(properties.getString("time"));
上面获取出来的值可有用 log 或者 Toast 显示出来
四、JSON 数据中时间格式的转换
可以看出来 JSON 中 “time” 键值为毫秒数,我们便于观看需要转换为我们熟悉的格式,所以我们用到了 SimpleDateFormat类,基本格式是:
//引号中的格式参照下图SimpleDateFormat dateFormat=new SimpleDateFormat ("yyyy-MM-dd");Date date=new Date(time); //time为获取到的毫秒数String showDate=dateFormat.format(date);//用 log 或者 Toast 显示出来
如果要处理数值的格式我们用DecimalFormat类,用法很简单,如:
//“0”表示站位,下面的意思表示只保留一位小数//当然我们可以使用Math类也能达到保留一位小数 DecimalFormat decimalFormat=new DecimalFormat("0.0");
更详细的可以查看 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”为划分
//说明一下mData.getLocation()是adpater中获取的具体的“place”数据 String show=null; //获取出现“of”的索引值 int indexOf=mData.getLocation().indexOf("of"); //如果数据包含“of” if(mData.getLocation().contains("of")){ //从0索引开始到of之后得到索引结束取出之间的值 show=mData.getLocation().substring(0,indexOf+2); }else{ show="near the"; } //设置显示的文本 TextView mLocation=(TextView)findViewById(R.id.); mLocation.setText(show);
更多的操作需要具体要求修改,答案不唯一,有兴趣可以把其他的几个方法的尝试一下
- Json(Json.Net)学习笔记
- JSON学习笔记
- JSON学习笔记
- json学习笔记
- JSON学习笔记
- json格式学习笔记
- JSON学习笔记(-)
- JSON学习笔记
- JSON学习笔记
- json学习笔记
- Json学习笔记
- json学习笔记
- JSON学习笔记
- JSON taglib学习笔记
- struts2 Json 学习笔记
- JSON学习笔记一
- Ajax、json学习笔记
- Json 学习笔记
- 随手记录-通信协议基础知识
- Codeforces gym 101102 A dp
- 如何用一个宏将一个数字的奇数位和偶数位交换
- JS 中除cookie存储外,还有哪些存储方式?
- Servlet--登录案例及编码解决方案
- JSON学习笔记
- AndroidAnnotations注解框架
- 随手记录--网络编程
- Hibernate 异常CacheException: Another unnamed CacheManager already exists in the same VM
- hust 5239 Doom(线段树 规律OR数论 待整理 )
- mysql 视图
- 337. House Robber III
- HDU
- Uboot移植(smart210)