解析 JSON 步骤
如果没有自带 , 就添加 第三方包 (JavaScript编程语言本身自带解析JSON的能力)
一般是要手写 :
实体类
JSON -> 实体类 中间映射
Gson的话 , 映射可以不写
VS2015 上, 两个都可以不写 , IDE生成实体类 , 调用包的方法让它自己映射
有第三方的
JSON字符串到实体类
{
"Name": "Apple",
"Expiry": "2008-12-28T00:00:00",
"Sizes": [
"Small"
]
}
VS的选择性粘贴
JSON.net 包
VS2015
Android 添加第三方解析JSON的包 :
GSON就很好用 ,
JSONArray
怎么使用注释,在JSON文件里.需要有"]"为结尾,不需要"//",因为它无法解析乱七八糟的东西
JSON文件的本质是字符串
练习嵌套的写法
结合以前的MyEclips的快捷键和常用的设置
先备份eclipse_Mars的 各种设置,再导入MyEclips的配置文件到eclipse_Mars里
需要的基本配置:
编码 GBK
需要的快捷键:
标签的切换,比如 c+tab 编辑页面
删除当前行
鼠标光标(焦点)的来回跳转,跳转到上一个位置,最好能再上一个位置
P86 TabHost
的替代方an,应该是一种新的布局吧
使用 使用使用 mark 写作标记语言吧
不去背诵语法
[
{
"ID":"1",
"name":"A"
},
{
"ID":"2",
"name":"B"
},
{
"ID":"3",
"name":"C"
}
]
package json_;
import file.FileHelper;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
//JSONArray j = new JSON
// TODO Auto-generated method stub
//String contextOfJSON = new Util().ReadFile("F:\\test\\apkinfo.json");
//String contextOfJSON = json_helper.ReadFile("F:\\test\\apkinfo.json");
FileHelper fileHelper=new FileHelper();
//String contextOfJSON = fileHelper.getFileContent("F:\\test\\path.json");
String contextOfJSON = fileHelper.getFileContent("G:\\0_temp\\profile.JSON");
JSONArray jsonArray = JSONArray.fromObject(contextOfJSON);
//TUDO 输出JSONArray看一下内容
System.out.println( jsonArray );
System.out.println( jsonArray.getJSONArray(3).getJSONObject(0) );
// JSONObject temp=jsonArray.getJSONObject(0);
//
// String strHas="ID";
// strHas="name";
// //strHas="d";
// if( temp.has( strHas ) ){
// System.out.println( "有 这个key和value对" );
// }else {
// System.out.println( "没有" );
//
// }
System.err.println( "------------------" );
// Object o_1_3=jsonArray.get(3);
// System.out.println( "第1层的3号元素:"+o_1_3 );
//
// JSONObject jo_1_3=(JSONObject)o_1_3;
// jo_1_3.has(key)
// //jo_1_3.getJSONObject(key)
//
// 2_0
// ja.get(0);
// System.out.println( "第2层的0号元素:"+jo );
//返回数组的第0号,以Object对象的形式
//得到 第0号Object的toString():String,它在数组的第1位
//jsonArray.getString(0)
//返回数组的第0号,以JSONObject对象的形式
// jsonArray.getJSONObject(0);
//TUDO 遍历每个JSONObjec,输出所有的JO里的信息
// int size = jsonArray.size();
// System.out.println("Size: " + size);
// for (JSONObject jsonObject : jsonArray) {
//
// }
//不能用JSONObject 来接收遍历到的各个元素
// int i=0;
// System.out.println(i+"");
// i++;
// for (Object object : jsonArray) {
// JSONObject jo=(JSONObject)object;
// //String temp=jo.getString("path");
// //Object temp=jo.get("path");
// if( jo.containsKey("path") ){
// System.out.println(jo.getString("path") );
// }
//
//// if( temp.temp==true )
//// {System.out.println( "进入判断" );}
//// //"D:\\\\test".equals(temp)
//// System.out.println( temp );
// }
// for (Object object : jsonArray) {
// System.err.println( ((JSONObject)object).getString("path") );
// }
// for (Object object : jsonArray) {
// JSONObject jo=(JSONObject)object;
// System.out.println( jo.getString("path") );
// }
// for (int i = 0; i < size; i++) {
//
// JSONObject jsonObject = jsonArray.getJSONObject(i);
//
// System.out.println( jsonObject.get("name"));
//
// System.out.println("[" + i + "]name=" + jsonObject.get("name"));
// System.out.println("[" + i + "]package_name=" + jsonObject.get("package_name"));
// System.out.println("[" + i + "]check_version=" + jsonObject.get("check_version"));
// }
}
}
//[
// {
// "name": "帐号",
// "package_name": "com.android.account",
// "check_version": "1.2"
// },
// {
// "name": "系统升级",
// "package_name": "com.android.osupdate",
// "check_version": "1.0"
// },
//
//]
//java里面用[]做根,可能是看做数组,里面放的是字符串.JSON不能这样,用{}
//答案:
//Size: 2
//[0]name=帐号
//[0]package_name=com.android.account
//[0]check_version=1.2
//[1]name=系统升级
//[1]package_name=com.android.osupdate
//[1]check_version=1.0
// // TODO Auto-generated method stub
// String JsonContext = new Util().ReadFile("D:\\test\\apkinfo.json");
// JSONArray jsonArray = JSONArray.fromObject(JsonContext);
// int size = jsonArray.size();
// System.out.println("Size: " + size);
// for (int i = 0; i < size; i++) {
// JSONObject jsonObject = jsonArray.getJSONObject(i);
// System.out.println("[" + i + "]name=" + jsonObject.get("name"));
// System.out.println("[" + i + "]package_name=" +
// jsonObject.get("package_name"));
// System.out.println("[" + i + "]check_version=" +
// jsonObject.get("check_version"));
// }
// }
- [知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)
上一讲为大家讲了什么是JSON,那么这一讲为大家带来了在WEB项目中JSON的用法,也就是JSON的封装与解析. 此图是数据库中的部分内容 一.JSON封装 所谓的JSON封装,指的是在Servlet ...
- [知了堂学习笔记]_JSON数据操作第1讲(初识JSON)
一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
随机推荐
- 献上一款漂亮的手写PHP验证码
献上一款漂亮的PHP验证码,可以根据个人需求作调整,代码如下(审美观不同,欢迎吐槽): <?php /** * Author: xiongwei * Email: 695704253@qq.co ...
- 桥梁(Bridge)模式
桥梁(Bridge)模式:桥梁模式是一个非常有用的模式,也是比较复杂的一个模式.熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP ...
- Java集合类总结 (四)
PriorityQueue类 优先队列不管你按照什么顺序插入元素,出队列的时候元素都是按顺序输出的.也就是每次调用remove的时候,都返回当前队列中最小的元素.然后队列中的元素不是维持排序状态的,如 ...
- Android ViewPager + Fragment的布局
ViewPager And Fragment 1.之前有篇博客是讲ViewPager的用法的:http://www.cnblogs.com/liangstudyhome/p/3773156.html ...
- web集群时session同步的3种方法
在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状态,一会又不是 ...
- webapi put 请求405问题
put 请求的时候 浏览器会像服务器发送两个请求 如何没做任何配置第一个options请求是会报错的 这是需要配置路由给options作响应 这时options请求就通过了,然后你们会看到你的put ...
- 「BZOJ 2809」「APIO 2012」Dispatching「启发式合并」
题意 给定一个\(1\)为根的树,每个点有\(c,w\)两个属性,你需要从某个点\(u\)子树里选择\(k\)个点,满足选出来的点\(\sum_{i=1}^k w(i)\leq m\),最大化\(k\ ...
- StackOverflow: 你没见过的七个最好的Java答案
StackOverflow发展到目前,已经成为了全球开发者的金矿.它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西.这篇文章是在我们审阅了StackOver ...
- c++多线程基础2(命名空间 this_thread)
整理自:zh.cppreference.com/w/cpp/thread std::this_thread::yield: 定义于头文件 <thread> 函数原型:void yield( ...
- Unity---简单单例模式的使用
单例模式特点 1.一般用在一个脚本访问另一个脚本中的数据. 2.对于使用单例模式的类,系统中只会存在唯一一个实例,减少了内存开销. Unity中继承于MonoBehaviour的单例模式 public ...