首页 > 学院 > 开发设计 > 正文

JAVA & JSON详解

2019-11-15 01:16:28
字体:
来源:转载
供稿:网友
java & JSON详解JSON定义

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、Javascript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

JSON用途
  • 使用基于JavaScript的应用程序,其中包括浏览器扩展和网站

  • 使用JSON格式序列化和结构化的数据传输网络连接

  • 这主要用于服务器和Web应用程序之间的数据传输

  • Web服务和API采用JSON格式提供公共数据

  • 它可以用来与现代编程语言

JSON的特点
  • 易于读写JSON

  • 轻量级的基于文本的交换格式

  • 独立语言

JSON 语法规则JSON 语法是 JavaScript 对象表示语法的子集。
  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
JSON 名称/值对JSON 数据的书写格式是:名称/值对。名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
  JSON格式支持的数据类型有以下:
类型描述
Number在JavaScript中的双精度浮点格式
String双引号的反斜杠转义的Unicode
Booleantrue 或 false
Array值的有序序列
Value它可以是一个字符串,一个数字,真的还是假(true/false),空(null)等
Object无序集合键值对
Whitespace可以使用任何一对中的令牌
nullempty

以下转自:易百教程网

JSON和Java实体之间的映射

JSON.simple实体映射从左侧向右侧解码或解析,并映射实体从右侧到左侧编码。

JSONJava
stringjava.lang.String
numberjava.lang.Number
true|falseava.lang.Boolean
nullnull
arrayjava.util.List
objectjava.util.Map

虽然解码,默认 java.util.List的具体类是具体类 org.json.simple.JSONArray 和默认 java.util.Map 是org.json.simple.JSONObject。

下面是一个简单的例子来编码JSONObject使用Java的JSON对象的一个子类的java.util.HashMap 无序。如果您需要严格的顺序元素使用方法JSONValue.toJSONString(映射)有序映射实现作为 java.util.LinkedHashMap等。

import org.json.simple.JSONObject;class JsonEncodeDemo {   public static void main(String[] args)    {      JSONObject obj = new JSONObject();      obj.put("name", "foo");      obj.put("num", new Integer(100));      obj.put("balance", new Double(1000.21));      obj.put("is_vip", new Boolean(true));      System.out.PRint(obj);   }}

  

虽然上述程序的编译和执行,这将产生以下结果:

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

以下是另一个例子,它显示了使用Java的JSONObject 的 JSON对象流:

import org.json.simple.JSONObject;class JsonEncodeDemo {   public static void main(String[] args)    {      JSONObject obj = new JSONObject();      obj.put("name","foo");      obj.put("num",new Integer(100));      obj.put("balance",new Double(1000.21));      obj.put("is_vip",new Boolean(true));      StringWriter out = new StringWriter();      obj.writeJSONString(out);            String jsonText = out.toString();      System.out.print(jsonText);   }} 

虽然上述程序的编译和执行,这将产生以下结果:

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"} 
在Java的JSON解码

下面的例子利用的JSONObject 和JSONArray JSONObject 是一个java.util.Map JSONArray是一个java.util.List,所以可以对其进行访问Map 和List 的标准操作。

import org.json.simple.JSONObject;import org.json.simple.JSONArray;import org.json.simple.parser.ParseException;import org.json.simple.parser.JSONParser;class JsonDecodeDemo {   public static void main(String[] args)    {      JSONParser parser=new JSONParser();      String s = "[0,{/"1/":{/"2/":{/"3/":{/"4/":[5,{/"6/":7}]}}}}]";      try{         Object obj = parser.parse(s);         JSONArray array = (JSONArray)obj;         System.out.println("The 2nd element of array");         System.out.println(array.get(1));         System.out.println();         JSONObject obj2 = (JSONObject)array.get(1);         System.out.println("Field /"1/"");         System.out.println(obj2.get("1"));             s = "{}";         obj = parser.parse(s);         System.out.println(obj);         s= "[5,]";         obj = parser.parse(s);         System.out.println(obj);         s= "[5,,2]";         obj = parser.parse(s);         System.out.println(obj);      }catch(ParseException pe){         System.out.println("position: " + pe.getPosition());         System.out.println(pe);      }   }}

虽然上述程序的编译和执行,这将产生以下结果:

The 2nd element of array{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}Field "1"{"2":{"3":{"4":[5,{"6":7}]}}}{}[5][5,2]

上一篇:Plus One

下一篇:[LeetCode] Symmetric Tree

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表