JSON的簡介和在Java中的使用
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的資料交換語言。
JSON建構於兩種結構:
- “名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為物件(object)
- 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為陣列(array)。
這些都是常見的資料結構。事實上大部分現代計算機語言都以某種形式支援它們。這使得一種資料格式在同樣基於這些結構的程式語言之間交換成為可能。
JSON具有以下這些形式:
物件是一個無序的“‘名稱/值’對”集合。一個物件以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
陣列是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。
值(value)可以是雙引號括起來的字串(string)、數值(number)、true
、false
、 null
、物件(object)或者陣列(array)。這些結構可以巢狀。
一個簡單的JSON例項
{ "name": "hello", "age": 12, "isNonProfit": true, "address": { "city": "浙江杭州", "country": "中國" }, "links": [ { "name": "Google", "url": "http://www.google.com" }, { "name": "Baidu", "url": "http://www.baidu.com" } ] }
一、在JavaScript中
1.常見的兩種結構:物件和陣列
2.資料訪問
在js物件中可以利用"."操作符直接取名稱對應的值,而陣列的索引是從零開始
3.在資料傳輸中,json是以字串的形式傳遞的,而JS操作的是JSON物件,所以,需要JSON物件和JSON字串之間的相互轉換
json字串轉換為json物件
json物件轉換為json字串
二、在Java中的使用
先在maven中引入jackson
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tedu.ajax</groupId>
<artifactId>ajax</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
</dependencies>
</project>
定義一個Student類
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
private String address;
private String email;
public Student() {}
public Student(String name, int age, String address, String email) {
super();
this.name = name;
this.age = age;
this.address = address;
this.email = email;
}
//Getters,Setters和toString()方法省略
}
1.json字串轉換為Java物件
@Test
public void test1() throws Exception{
String json = "{\"name\":\"Jack\",\"age\":18,\"address\":\"China\"}";
System.out.println(json);
ObjectMapper mapper = new ObjectMapper();
//Student必須有無參構造
Student student = mapper.readValue(json, Student.class);
System.out.println(student);
}
結果:
2.json物件轉化為字串
@Test
public void test2() throws JsonProcessingException{
Student student = new Student("Tom", 23, "USA","[email protected]");
ObjectMapper mapper = new ObjectMapper();
String str = mapper.writeValueAsString(student);
System.out.println(str);
}
結果:
相關推薦
fastJson中常用JSON字串和Java物件互轉
1.使用fastJson,首先引入fastJson依賴 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba<
json在js和java中的使用
在程式語言中,只要有了陣列(array)和物件(object)就能夠儲存一切資料,同時在不同的語言之間進行資料交換的時候,傾向於使用字串,因為字串在各個語言中的處理方式大致相同,那麼JSON的誕生也就在情理之中了。 JSON的優勢在於: (1).JSON是純文字格式,是獨
C#和JAVA中編寫事務代碼
com creat .class eas ++ acc data savepoint return C# DAL層代碼,運行多條增刪改,使用事務操作: /// <summary> /// 運行 多條增刪改 (非查詢語句)
js和java中使用正則表達式校驗郵箱
reg 表達 mat 表達式 正則表達式 javascrip 格式 正則 pri 問題:經常在項目中要校驗郵箱? 郵箱格式:首位必須為字母,必須包含一個@符號,並且@之後有個名字,之後還有個.,再有一個後綴名 例如:[email protected] 一、java
php和java中的加密和解密
padding 而不是 bsp enc openss 解密 div des算法 -c 遇到的java代碼如下: Cipher cipher=Cipher.getInstance("DESede/CBC/PKCS5Padding"); 在php中使用des算法 始終校驗不
c#中的裏氏轉換和Java中強制類型轉換在多態中的應用
readline color extends pre pri console AS 定義 spa 在c#中: 註意: 子類並沒有繼承父類的構造函數,而是會默認調用父類那個無參數的構造函數。 如果一個子類繼承了一個父類,那麽這個子類除了可以使用自己的成員外,還可以使用從父類
c#和Java中的多態
rtu 重新 指定 demo har ati static lse 編譯器 多態:讓一個對象表現出多種類型,寫出通用的代碼,最大限度的屏蔽各個子類之間的差異性。 c#舉例: 1 將父類的方法標記為虛方法 ,使用關鍵字 virtual,這個函數可以被子類重新寫一個遍。
Unix時間戳和Java中的時間戳的區別
前言 最近在使用阿里的日誌服務時,遇到了一些Java中Timestamp的坑,所以特意做了瞭解並整理了一下。在這之前首先得介紹一下Unix時間戳: Unix時間戳是從1970年1月1日(UTC
Hadoop權威指南---HDFS簡介和java API操作
目錄 Hadoop分散式檔案系統 1、HDFS的設計 HDFS的特點 超大檔案,目前已經有PB級資料的Hadoop叢集; 流式資料訪問,一次寫入、多次讀取;
MYSQL的一些問題(關於navicat1044或者1045的問題和java中mysql亂碼問題的解決)
1.亂碼問題應該為時區問題 1.1 檢視mysql當前時間,當前時區 > select curtime(); #或select now()也可以 +-----------+ | curtime() | +-----------+ | 15:18:10 | +---------
字元編碼和Java中的亂碼問題
ASCII碼 在計算機內部,所有的資訊最終都表示為一堆二進位制形式的資料。每一個二進位制位(bit)有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,稱為一個位元組(byte),從0000000到11111111。上世紀60年代,美國製定了一套字元編碼,
Spring的AOP簡介和Spring中的通知使用方法以及異常
AOP中關鍵性概念 連線點(Joinpoint):程式執行過程中明確的點,如方法的呼叫,或者異常的丟擲. 目標(Target):被通知(被代理)的物件 注1:完成具體的業務邏輯 通知(Advice):在某個特定的連線點上執行的動作,同時Advice也是程式程式碼的具體實現,例如一個
Java中的final關鍵字 和 Java中的抽象類
Java中的final關鍵字 使用final宣告的類不能被繼承; 使用final宣告的方法不能被子類覆蓋; 使用final宣告的變數不能被修改,即為常量; Java中的抽象類 定義:在java中,含有抽象方法的類稱為抽象類,抽象類不能生成物件; 注意點: 1,包
所有和Java中代理有關的知識點都在這了
對於每一個Java開發來說,代理這個詞或多或少都會聽說過。你可能聽到過的有代理模式、動態代理、反向代理等。那麼,到底什麼是代理,這麼多代理又有什麼區別呢。本文就來簡要分析一下。 代理技術,其實不只是Java語言特有的技術,其實在網際網路早期就已經出現了這種技術。 在計
Android和JAVA中接入web3j
1:先啟動geth節點 geth --identity "xiaohong" --rpc --rpccorsdomain "*" --rpcaddr "192.168.1.105" --datadir "./" --port "30303" --nodiscover --
關於JavaScript中的date和java中的date差14小時問題
今天遇到一個問題,在java中獲取的時間傳到前臺頁面, 原時間是這樣的:2016-11-10 15:29:11, 傳到前臺來是這樣的:Thu Nov 10 15:29:11 CST 2016, 在js中用getDate(),結果是11,getHours(),結果是5,也就是
JSON資料和Java物件的相互轉換
* JSON解析器: * 常見的解析器:Jsonlib,Gson,fastjson,jackson 1. JSON轉為Java物件 1. 匯入jackson的相關jar包 2. 建立Jackson核心物件
js和java中字元和unicode編碼的轉化
一般來說,良好的程式設計習慣要求在程式碼裡儘量不出現中文,一個是國際化問題,即同一份程式碼可能要滿足不同語言的顯示,還一個就是可能產生亂碼問題,不同的程式設計師用不同的IDE匯入這份程式碼可能使用了不同的預設編碼。 然而有些場景是必須保持中文的,比如讀取某個帶樣式文字的字型
TCP/IP簡介和Android中Socket及http的使用
計算機網路及其協議 概述 OSI/RM 在1978年國際標準化組織(ISO)提出了“開放系統互連參考模型”,即著名的OSI/RM 模型(Open System Interconnection/Reference Model)。此後,不同廠家生產的計算機便能相互通訊,建立起了計算機網路
C和Java中static修飾符的作用
C中的static C語言中的static作用有兩個:其一,增加區域性變數的生命週期,將其升級為全域性變數;其二,宣告變數或常量不可被其他檔案直接引用,必須通過標頭檔案包含的方式。 --------