一、简介

 
      JSON:JavaScript对象表示法(JavaScript object Notation)
 
      JSON是存储和文本交换信息的语法
 
      JSON是轻量级的文本数据交换格式
 
      JSON独立于语言和平台
 
      JSON具有自我描述性,更易理解
 
二、与XML相比
 
    JSON类似于XML,但比XML更小、更快、更易解析
 
    没有结束标签、更短、读写速度更快、使用数组、不使用保留字
 
    缺点:
     
        必须使用Unicode字符集,受约束性较强
 
        必须遵循JSON的四个基本原则
 
    使用场景:
 
          适合数据量大,不要求保留原有数据类型的情况下使用
 
三、JSON语法
 
    1、JSON语法是JavaScript对象表示法语法的子集
 
          ·数据在名称/值对中
 
          ·数据有逗号分隔
 
          ·花括号保存对象
 
          ·方括号保存数组
 
    2、JSON的值可以是
 
          ·数字(整数或浮点数)
 
          ·字符串(在双引号中)
 
          ·逻辑值(true或false)
 
          ·数组(在方括号中)
 
          ·对象(在花括号中)
 
          ·null
    
      如:{"firstName":"John","lastName":"Doe"}
 
四、使用Java解析Json文件
 
      下载 gson.jar包
 
      读取文件
    
      JsonParser parser = new JsonParser();
       JsonObject object = (JsonObject) parser .parse(new FileReader( "src/test.json"));
        System.out .println("cat=" +object .get("cat" ).getAsString());
        System.out .println("pop=" +object .get("pop" ).getAsBoolean());
       
        JsonArray array = object .get("language" ).getAsJsonArray();
        for (int i = 0;i <array .size();i ++){
          System. out .println("----------------" );
          JsonObject subObject = array .get(i ).getAsJsonObject();
             System. out.println( "id="+ subObject .get("id" ).getAsInt());
             System. out.println( "name="+ subObject .get("name" ).getAsString());
             System. out.println( "ide="+ subObject .get("ide" ).getAsString());
          
        }
 
     创建文件
 
 
           JsonObject object = new JsonObject();
           object.addProperty( "cat" , "it" );
          
           JsonArray array = new JsonArray();
          
           JsonObject lan1 = new JsonObject();
           lan1.addProperty( "id" , 1);
           lan1.addProperty( "name" , "java" );
           lan1.addProperty( "ide" , "Eclipse" );
           array.add( lan1);
          
           JsonObject lan2 = new JsonObject();
           lan2.addProperty( "id" , 2);
           lan2.addProperty( "name" , "Swift" );
           lan2.addProperty( "ide" , "XCode" );
           array.add( lan2);
          
           JsonObject lan3 = new JsonObject();
           lan3.addProperty( "id" , 3);
           lan3.addProperty( "name" , "C#" );
           lan3.addProperty( "ide" , "Visual Studio" );
           array.add( lan3);
       
           object.add( "language" , array );
           object.addProperty( "pop" , true );
       
           System. out .println(object .toString());
 
 
五、一个重要思想
 
       在编程过程中,遇到错误了,遇到非预期的结果了,不要急着去猜,去试来找出错误
 
       这是一种极其浪费精力的低级debug的错误方法
 
       要理清脉络,从根源思考清楚出错的逻辑是什么,这样才能加深理解,在以后的工作中避免更多错误
 
 
 
六、一个小补充
 
    所有编程语言的开发都离不开三种数据类型
 
     
    1、 标量(Scalar)   一个单独的字符串
 
    2、 序列(sequence) 如数组或列表
 
    3、 映射(mapping)  名/值  如散列或字典

05---JSON学习(Java)的更多相关文章

  1. Json for Java API学习

    首先声明:本文来个非常多网友的博客,我通过參考了他们的博客,大致的了解了一些项目中经常使用的Json in java 类和方法,以及关于json的个人理解 个人对json的一些简单理解 在近期的学习中 ...

  2. Json与Java对象互转之Gson学习

    Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习         我曾在<XML,Object,Json转换之浅析Xstr ...

  3. 20145219 《Java程序设计》第05周学习总结

    20145219 <Java程序设计>第05周学习总结 教材学习内容总结 try.catch 1.求平均数程序示例 import java.util.Scanner; public cla ...

  4. json学习系列(8)JSON与JAVA数据的相互转换实例

    一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author ...

  5. Json学习总结(1)——Java和JavaScript中使用Json方法大全

    摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语 ...

  6. 通过WebGoat学习java反序列化漏洞

    首发于freebuff. WebGoat-Insecure Deserialization Insecure Deserialization 01 概念 本课程描述了什么是序列化,以及如何操纵它来执行 ...

  7. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  8. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

  9. 新手学习Java,该从哪里学起?

    最近在入坑Java,Java基础知识了解的差不多了,听过很多人的建议,但是从别人那里听到的都是一些比较琐碎的东西,根据打听来的,结合网上自己找到的建议,开始详细地记录一下初学Java,应该掌握哪些具体 ...

  10. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

随机推荐

  1. 使用Powermock进行单元测试,以及常见问题的处理

    1. 引言 在进行单元测试时,经常遇到被测方法依赖外部对象和环境,如需要数据库连接,网络通信依赖等,需要进行大量的初始化工作,这时可以采用powermock+mockito对被测对象进行模拟,通过录放 ...

  2. poj3321

    树映射到树状数组上 非常好的题目,给了我很多启发 题目要求动态求一个棵子树的节点个数 不禁联想到了前缀和,只要我们能用一个合适的优先级表示每个顶点,那么就好做了 我们可以考虑将子树表示成区间的形式 这 ...

  3. tyvj1519博彩游戏

    博彩游戏 From admin 背景 Background Bob最近迷上了一个博彩游戏…… 描述 Description 这个游戏的规则是这样的:每花一块钱可以得到一个随机数R,花上N块钱就可以得到 ...

  4. (二)学习CSS之cursor属性

    参考:http://www.w3school.com.cn/tiy/t.asp?f=csse_zindex cursor 属性规定要显示的光标的类型(形状). <html> <bod ...

  5. 基于kryonet的RPC,使用kryo进行序列化

    Kryo是一个序列化框架. Kryonet是一个基于kryo的RPC框架,它实现了一套高效简洁的API,它通过NIO实现了TCP和UDP通讯,目前还不支持Http. 自己写了一个测试代码,运行了下,感 ...

  6. CentOS 7 nfs客户端挂载问题

    配置nfs服务器时,服务器端挂载没有问题,但是客户端挂载时提示:mount.nfs: Connection timed out 解决方法1: 关闭firewalld # systemctl stop ...

  7. GCC 编译命令

    今天突然被同事问道一个GCC编译命令为的问题,感觉对相应内容生疏了,赶紧整理下相关内容,梳理下相关知识. GCC命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再 ...

  8. Base-Android快速开发框架(四)--网络操作之FastJson以及AsyncHttpClient

    Android的展示数据,除了上章所讲的本地存储外,大部分数据都来自于网络.首先介绍一下Android APP开发常见的网络操作方式.从网络层面上有底层的tcp/ip,也就是我们常见的socket套接 ...

  9. CentOS 7.0 安装 python3.X 脚本

    #!/bin/sh #第一个Linux下的脚本,太多不明白的地方,只是依着网上的例子照葫芦画瓢,能正常运行即可 #运行环境 CentOS 7.0 版本 #首行指定程序的路径,以#号开头的行是注释行 # ...

  10. 谈谈Nginx有哪些特点

    1.热部署        我个人觉得这个很不错.在master管理进程与worker工作进程的分离设计,使的Nginx具有热部署的功能,那么在7×24小时不间断服务的前提下,升级Nginx的可执行文件 ...