JavaScript Object Notation:javascript的对象表示法。

  这是一种能传递对象的语法,可以是键值对,数组,以及其他对象。  
  轻量级的数据传输方法。

  json格式:

  { key :{ key : [ { key :value ,key :value } ] } },灵活组合。

  { } : 表示一个集合,容器
  [ ] :里面装数组,集合
  键值对之间用冒号隔开,数组的元素用逗号隔开。

  

  他不是面向对象的,但是较于javascript他更具有分析性,复用性。前后端都可使用。
  json的值可以是:int float string boolean 数组 对象。
  

  json方法:
  JSON.parse():该方法用于解析JSON类型的字符串并且返回对应的值。
  JSON.stringify():该方法同样返回与指定值对应的JSON字符串。

  

  JavaScript可以用eval()方法将json文本转换为javascript对象。
  var obj = eval ( " (" + json + " ) " );

  注意:javascript的eval()方法可编译执行任何javascript代码但是这并不安全,如果使用json解析器将json转换为javascript就会更安全

  json格式的转换,对象,集合:(官方的json包和阿里巴巴的json包)
  

  官方:不能一次拿到对象的所有属性,一次只能取单一的值:
    eg: user对象:有name id
      转换 JSONObject userJson = new JSONObject(user);
      获取 String userName = userJson.getString("name");
        int userId = userJson.getInt("age");
      user集合list
      转换:JSONArray userJsonArray = new JSONArray(list);
      获取:JSONObiect userObj = userJsonArray.getJSONObject(0);
  阿里巴巴:fastJson包
    eg:user对象:可以直接获得该对象
      转换:String  userFast =  JSON.toJSONString(user);----json字符串

      获取:User u1 = JSONObject.parseObject(fastUser,User.class);
      User集合 : 可以直接获得该对象集合
      转换: String fastList = new JSONArray(list);
      获取: list<User> fastList = JSONArray.parseArray(fastList,User.class)
  

  注意:测试的时候注意方法名,二者方法名一样,需要全名引用。

  

 import com.alibaba.fastjson.JSON;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import java.util.ArrayList;
import java.util.List; public class TestJson {
public static void main(String[] args) throws JSONException { List<User> list = new ArrayList<>(); User user1 = new User(12,"张三");
User user2 = new User(13,"李四");
list.add(user1);
list.add(user2); System.out.println("---------------------------");
System.out.println(" 官方jar包测试");
//org.json 转换对象测试
JSONObject userObj = new JSONObject(user1);
//getString需要异常抛出防止key值不存在
System.out.println("拿到该对象的id值: "+userObj.getString("id"));
//org.json 转换集合测试
JSONArray userList = new JSONArray(list);
//get方法拿到集合下标,需要抛出下标不存在的异常
System.out.println("拿到该集合下标为0的值: "+userList.get(0));
User user3 = (User) userList.get(0);
System.out.println("输出对象:"+user3.toString());
String userStr = new JSONObject(user1).toString();
System.out.println("直接打印对象:"+user1.toString());
System.out.println("对象转换json字符串:"+userStr);
System.out.println("直接打印集合: "+list);
//对象转json字符串
String userlistStr = new JSONArray(list).toString();
System.out.println("集合转换json字符串: " + userlistStr);
System.out.println("---------------------------"); //阿里巴巴的fastJson包测试
System.out.println("---------------------------");
System.out.println(" 阿里巴巴fastJson包测试");
//com.alibaba.fastjson包测试 由于方法重名,使用全名
//直接转换json字符串
String userFast = JSON.toJSONString(user1);
System.out.println("fastjson转换对象为json字符串: "+userFast);
String userlistFast = JSON.toJSONString(list);
System.out.println("fastjson直接转换集合为json字符串: "+userlistFast); //json字符串转换为json对象
com.alibaba.fastjson.JSONObject userFast2 = JSON.parseObject(userFast);
System.out.println("fastjson将json字符串转换的json对象:"+userFast2);
//json字符串转换为json集合
com.alibaba.fastjson.JSONArray userlistFast2 = JSON.parseArray(userlistFast);
System.out.println("fastjson将json字符串转换的json集合:"+userlistFast2);
}
}
---------------------------
官方jar包测试
拿到该对象的id值: 12
拿到该集合下标为0的值: User{id=12, name='张三'}
输出对象:User{id=12, name='张三'}
直接打印对象:User{id=12, name='张三'}
对象转换json字符串:{"name":"张三","id":12}
直接打印集合: [User{id=12, name='张三'}, User{id=13, name='李四'}]
集合转换json字符串: ["User{id=12, name='张三'}","User{id=13, name='李四'}"]
---------------------------
---------------------------
阿里巴巴fastJson包测试
fastjson转换对象为json字符串: {"id":12,"name":"张三"}
fastjson直接转换集合为json字符串: [{"id":12,"name":"张三"},{"id":13,"name":"李四"}]
fastjson将json字符串转换的json对象:{"name":"张三","id":12}
fastjson将json字符串转换的json集合:[{"name":"张三","id":12},{"name":"李四","id":13}]

什么是Json,Json如何使用的更多相关文章

  1. Newtonsoft.Json(Json.Net)学习笔记

    Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summar ...

  2. Newtonsoft.Json(Json.Net)学习笔记(转)

    概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...

  3. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  4. Android笔记——什么是json?json如何使用?

    什么是json 什么是json,json是什么,json如何使用 JSON是JavaScript Object Notation的缩写,可见JSON来源于JavaScript.JSON数据是一系列键值 ...

  5. Newtonsoft.Json(Json.net) 的使用

    Newtonsoft.Json(Json.net) 的使用 //Newtonsoft.Json.dll using Newtonsoft.Json; using Newtonsoft.Json.Con ...

  6. C#如何Json转字符串;字符串转Json;Newtonsoft.Json(Json.Net)

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/). 下面是Json序列化和反序列化的简单封装: /// & ...

  7. Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断

    1.Fastjson 我们通常在已知格式的情况下直接使用JSONObject,JSONArray,但是如果遇到需要判断格式呢? try{ Object object = JSON.parse(a); ...

  8. 黄聪:C#如何Json转字符串;字符串转Json;Newtonsoft.Json(Json.Net)学习笔记(转)

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/). 下面是Json序列化和反序列化的简单封装: /// & ...

  9. is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface | mongodb在windows和Linux导出出错

    执行mongoexport命令的时候 mongoexport --csv -f externalSeqNum,paymentId --host 127.0.0.1:27017 -d liveX -c ...

  10. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List<T>转JSON,JSON转List<T>,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

随机推荐

  1. 基于 kubeadm 部署单控制平面的 k8s 集群

    单控制平面不符合 HA 要求,但用于开发/测试环境不会有任何问题,如果资源足够的话(10台以上服务器,3台用于APIserver.3台用于 etcd 存储.至少3台用于工作节点.1台作为负载均衡),可 ...

  2. Netty基础系列(4) --堆外内存与零拷贝详解

    前言 到目前为止,我们知道Nio当中有三个最最核心的组件,分别是:Selelctor,Channel,Buffer.在Netty基础系列(3) --彻底理解NIO 这一篇文章中只是进行了大致的介绍. ...

  3. maven3实战之仓库

    maven3实战之仓库(maven仓库分类) maven3实战之仓库(maven仓库分类) ---------- 对于maven来说,仓库只分为两类:本地仓库和远程仓库.当maven根据坐标寻找构件的 ...

  4. 项目构建分析和 webpack 优化实践

    加入新公司一个月,最近接手在做一个 chrom 浏览器插件的项目,开发过程中发现项目打包的时间很长,足足有30多秒,这是让人很难接受的,而且构建的显示了几条包体积过大的提示信息: 可以看到,打包后有三 ...

  5. linux100day(day4)--文本处理三剑客

    在介绍三剑客之前,先来认识一下通配符和正则表达式 通配符 正则表达式 作用:通过一些特殊字符,来表示一类字符内容 1.字符匹配 .     任意一个字符 [ ]   范围内的任意一个字符 [^ ] 取 ...

  6. .net软件开发脚本规范-SVN标准

    一. SVN标准 1) 提交代码前先获取最新代码 2) 提交时需要填写信息,填写任务Excel中的修改内容列,如以下任务填写“业绩考核-工作量管理”,如果发生修改再次提交,在其后加上修改原因,例“业绩 ...

  7. 一、Ansible入门篇

    一.Ansible简介 Ansible是一个自动化运维的工具 基于python语言编写,因此机器需要具备python环境. 通过ssh的连接方式进行自动化部署,ansible优先使用OpenSSH,在 ...

  8. numba,让python速度提升百倍

    python由于它动态解释性语言的特性,跑起代码来相比java.c++要慢很多,尤其在做科学计算的时候,十亿百亿级别的运算,让python的这种劣势更加凸显. 办法永远比困难多,numba就是解决py ...

  9. C语言的输入

    %*2d%d 去掉前面两位 新旧函数 scanf和scanf_s 去掉安全检查 整型 scanf(“%d”,&x); scanf_s(“%d”,&x); 字符型 char ch; sc ...

  10. spring data jpa 的使用

    使用spring data jpa 开发时,发现国内对spring boot jpa全面介绍的文章比较少案例也比较零碎,因此写文章总结一下. spring data jpa介绍 首先了解JPA是什么? ...