Day01

 

 

01_junit介紹

測試代碼有沒有問題html

02_junit單元測試

package com.itheima.junitdemo;

public class Demo {
    public static void main(String[] args){
    MyMath math = new MyMath();
    int add = math.add(3, 4);
    System.out.println("result="+add);
    }
}
package com.itheima.junitdemo;
public class MyMath {
    public int add(inti,int j) {
        return i+j;
    }
}

包裏會出現一個名爲「testMyMath.java」java

package com.itheima.junitdemo;

import static org.junit.Assert.*;
import org.junit.Test;

public class testMyMath {

    @Test
    public void testAdd() {
        fail("Not yet implemented");
    }
}

如何測試呢?node

在裏面建立一個對象,經過對象調用add方法,再使用assertEquals方法,將實際值和指望值進行比較,選擇testadd()右鍵單擊run as運行,若測試成功,則左側出現如下圖形,運行條呈綠色,若測試失敗,運行條呈紅色。android

package com.itheima.junitdemo;
import static org.junit.Assert.*;
import org.junit.Test;

public class testMyMath {

    @Test
    public void testAdd() {
        MyMath math = new MyMath();
    int result = math.add(2, 3);
//斷言拿運行結果和指望結果進行比較若是相同說明測試成功
    assertEquals(5,result);
    }
}

這麼作的好處,junit的好處程序員

建立一個新類,對項目代碼無影響,此方式可作任何測試,不對其餘正常工程產生任何影響。web

03_註解介紹

註解 jdk1.5加入的apisql

預製註解三個:編程

   @Deprecated 當前方法過期的,提醒後來的程序員,此方法在api中有更好的實現。json

@Deprecated//過期的
    public int add(int i,int j){
        return i+j;
    }

@SuppressWarnings(「all」)  壓制警告,能夠關閉方法或某一行的警告,既能夠放在某一代碼前面,也能夠放在方法前面。api

@SuppressWarnings("all")//壓制全部警告,
    public static void main(String[] args) {
        MyMath math=new MyMath();
        @SuppressWarnings("deprecation")//壓制警告,能夠關閉方法或同一行的警告
        int add=math.add(3, 4);
        @SuppressWarnings("unused")//壓制警告
        int i=0;
        System.out.println("result="+add);
    }

@Override 當前方法覆蓋父類的方法

@Override//複寫父類的方法
    public void eat() {
        System.out.println("吃香的");
    }

04_xml的介紹

概念:XML是指可擴展標記語言,相似HTML,它被設計的宗旨是傳輸數據,或者說是描述數據的,並不是顯示數據。它沒有預約義,須要用戶自行定義標籤。目前遵循的是W3C組織與2000年發佈的XML1.0規範。

做用:描述有關係的數據,容許用戶自定義標籤,一個標籤用於描述一段數據;一個標籤分爲開始標籤和結束標籤。在起始標籤之間,又可使用其它標籤來實現數據關係的描述。XML的數據必須經過軟件程序來解釋執行或顯示,如IE;這樣的解析程序稱之爲Parser(解析器)。

1.能夠在客戶端(client)服務器(server)之間傳遞數據。

服務器裝着服務端程序的高配置電腦cpu Intel志強處理器

2.用來保存有關係的數據

3.用來作配置文件在android當中界面的佈局和文件,還有清單文件都是用xml文件來描述的

 

05_XML語法

中文經常使用的碼錶:gbk(2萬個字漢字) gb2312(5000個字漢字) utf-8

一個XML文件分爲以下幾部份內容:

—文檔聲明必須出如今文檔的第一行

最簡單的語法:<?xml version=」1.0」?>

用encoding屬性說明文檔所使用的字符編碼,保存在磁盤上的文件編碼要與聲明的編碼一致,若是不聲明編碼,默認的使用的是utf-8。如:<?xml version=」1.0」 encoding=」GB2312」?>

用standalone屬性說明文檔是否獨立,便是否依賴其餘文檔。如<?xml version=」1.0」 standalone=」yes」?>

使用記事本編寫:

 

瀏覽器預覽效果:

 

06_元素

(1)XML元素是指XML文件中出現的標籤。一個標籤分爲起始和結束標籤(不能省略)。一個標籤有以下幾種書寫形式:

包含標籤主體:<mytag>some cintent</mytag>

不包含標籤主體:<mytag></mytag>

一個標籤中可使用嵌套若干個子標籤,但全部標籤必須合理的嵌套,不容許有交叉嵌套。

一個XML文檔必須有且僅有一個根標籤,其餘標籤都是這個根標籤的子標籤或孫標籤。

(2)XML中不會忽略主題內容中出現的空格和換行(書寫的時候用了這些符號,就會致使流量的浪費)

(3)命名規範一個XML元素能夠包含字母、數字以及其它一些可見字符,但必須遵循下面的一些規範:

區分大小寫,例如,<p>和<P>是兩個不一樣的標記。

不能以xml(或XML、或Xml等)開頭。

能包含空格。

稱中間不能包含冒號(:)。

 

07_XML的屬性註釋&CDATA

一個元素能夠有多個屬性,每一個屬性都有它本身的名稱和取值,例如:<mytagname="value"  •••/>

屬性要寫在開始標籤中

屬性值必定用用引號(單引號或雙引號)引發來

屬性名稱的命名規範與元素的命名規範相同

元素中的屬性是不容許重複的

在XML技術中,標籤屬性所表明的信息也能夠用子元素的形式中描述

<?xml version="1.0" encoding="UTF-8"?>
<Person>
 <preson name="liufeng">
  <firstname>feng</firstname>
  <lastname>liu</lastname>
 </preson></Person>

註釋

XML中的註釋語法爲: <!--這是註釋-->

注意:

XML聲明以前不能有註釋,即不能在文檔的第一行

註釋不能嵌套,例如:

<!--大段註釋

```

<!--有段註釋-->

```

 

CDATA區

全部XML文檔中的文本均會被解析器解析

只有CDATA區段中的文本會被解析器忽略

語法:<![CDATA[    內容]]>

 

08_XML的特殊字符

特殊字符

替代符號

&

&amp

&lt

&gt

&quot

,

&apos

 

09_XML約束

(1)爲何要使用約束

XML都是用戶自定義的標籤,若出現小小錯誤,軟件程序將不能正確地獲取文件中的內容而報錯。

XML技術中心,能夠編寫一個文檔來約束一個XML的書寫規範,這個文檔稱爲約束文檔

(2)兩個概念:

格式良好的XML:遵循XML語法的XML(合適良好不必定有效,有效的必定是格式良好)

有效的XML:遵循約束文檔的XML

(3)約束的做用:

約束文檔定義了XML中容許出現的元素名稱,屬性及元素出現的順序

(4)經常使用的約束技術:XML DTD、XML Schema

(5)DTD快速入門

①DTD:文檔類型定義

②做用:約束XML的書寫規範

③注意:dtd能夠在單獨的文件中,擴展名是dtd,且必須使用utf-8編碼

10_dtd約束介紹

引入外部DTD文檔

XML 使用DOCTYPE語句來指明它遵循的DTD文檔

有兩種形式

①   當引用的DTD文檔在本地時,採用以下方式:

IDOCTYPE 根元素SYSTEM"book.dtd">

如: <IDOCTYPE 書架SYSTEM "book.dtd">

②   當引用的DTD文檔在公共網絡上,採用以下方式

<!DOC TYPE 根元素PUBLIC"DTD名稱」「DTD文檔URL>

如<!DOCTYPE web-app PUBL IC" -//Sun Microsystems,

Inc //DTD Web Application 2 3/EN"

http://java sun.com/dtd/web app_2_3.dtd>

 

DTD語法的細節

定義元素

DTD-定義元素

在DTD文檔中用ELEMENT關鍵字來聲明一個XML元素

語法<IELEMENT元素名稱使用規則>

使用規則:

(#PCDATA):指示元素的主體內容只能是普通的文本(parsed character Data)

EMPTY:用於指示元素的主體爲空,

ANY:用於指示元素的主題內容爲任意類型

(子元素):指示元素中包含的子元素

定義子元素及描述它們的關係:

若是子元素用逗號分開,說明必須按照聲明順序去編寫XML文檔

若是了元表用」|」分開,說明任選其一

用+*?來表示元素出現的次數

若是子元素後面沒有+*?說明必須出現一次

   +表示至少出現一次

   *表示無關緊要

?表示0次或1次

DTD獨立的dtd文檔,擴展名dtd編碼必須是utf-8

能夠聲明在xml文件中

經過dtd能夠約束元素的名稱元素出現的順序出現的次數屬性的名稱屬性的類型屬性是否必須出現,屬性的值是否能夠重複

 

DTD-定義屬性

在DTD文檔中用ATTUST關鍵字來爲一個元素市明屬性

語法<!ATTLIST 元素名稱屬性名1屬性值類型設置說明…..>

屬性值類型

CDAIA:表示屬性的取值爲普通的文本字符串

(a|b|c) 說明只能從中任選其一

ID表示屬性的取值不能重複

設置說明

#REQUIRED:表示該屬性必領出現

#IMPLIED:表示該屬生無關緊要

#FIXED:表示屬性的取值爲一個固定值語法HIXED「固定值」

 

DTD-定義引用實體

概念: 在DTD中定義,在XML中使用

語法<IENTITY 實體名稱"實體內容">

引用方式(主義是在XML中使用):&實體名稱

DTD中定義:

<!ENTITY copyright 」傳智播客版權全部」>

XML中引用:

&copynght

 

11_schema約束介紹

XML Schema也是一種用於定義和描述XML文檔與內容的模式語言,其出現是爲了克服DTD的侷限性

XML Schema VS DTD

   XML Schema符合XML語法結構。

   DOM、SAX等XML API很容易解析出現XML、Schema文檔中的內容。

   XML Schema對名稱空間支持的很是好。(名稱空間 name space:對應一個約束文檔)

   XML Schema比XML DTD支持更多的數據類型,並支持用戶自定義新的數據類型。

   XML Schema定義約束的能力很是強大,能夠對XML實例文檔做出細緻的語義限制。

   XML Schema不能像DTD同樣定義實體,比DTD更復雜,但Xml Schema如今已經是w3c組織的標準,它正逐步取代DTD。

 

Schema約束快速入門

XML Schema文件自身就是一個XML文件,但它的擴展名一般爲.xsd

一個XML Schema文檔一般稱之爲模式文檔(約束文檔),遵循這個文檔書寫的xml文件稱之爲實例文檔

和XML文件同樣,一個XML Schema文檔也必須有一個根節點,但這個根節點的名字爲schema

編寫了一個XML Schema約束文件後,一般須要把這個文件中聲明的元素綁定到一個URI地址上,在XML Schema技術中有一個問題專業術語來描述這個過程,即把XML Schema文檔聲明的元素綁定到一個名詞空間上,之後xml文件能夠經過這個URI(即名稱空間)來告訴解析引擎,xml文件中編寫的元素來自哪裏,被誰約束

schema約束文件

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  targetNamespace="http://www.itheima.com" 
  elementFormDefault="qualified">
  <xs:element name="書架">
   <xs:complexType>
     <xs:sequence maxOccurs="unbounded">
      <xs:element name="書">
       <xs:complexType>
        <xs:sequence>
          <xs:element name="書名" type="xs:string"/>
          <xs:element name="做者" type="xs:string"/>
          <xs:element name="售價" type="xs:string"/>
        </xs:sequence>
       </xs:complexType>
      </xs:element>
     </xs:sequence>
   </xs:complexType>
  </xs:element>
</xs:schema>

xml 

<?xml version="1.0" encoding="UTF-8"?>
<p:書架 xmlns:p="http://www.itheima.com" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.itheima.com bin/bookSchema.xsd ">
  <p:>
    <p:書名>p:書名</p:書名>
    <p:做者>p:做者</p:做者>
    <p:售價>p:售價</p:售價>
  </p:書>
</p:書架>

schema

擴展名一般爲.xsd,自己是一份xml文檔

對名稱空間支持的很好

支持類型比dtd更豐富約束更細緻能夠支持自定義的類型

schema正在逐步dtd在Android中清單文件和佈局文件用到了schema約束技術

xml的約束技術做用規範xml文件的書寫(標籤屬性文本)

xml約束經常使用的技術dtd schema

android用到的約束 schema

名稱空間

 

12_schema約束和回顧

Dtd獨立的dtd文檔 擴展名dtd 編碼必須是utf-8

能夠聲明在xml文件中

經過dtd能夠約束元素的名稱 元素出現的順序 出現的次數 屬性的名稱 屬性的類型 屬性是都必須出現 屬性的值是否能夠重複

Schema

1.擴展名 xsd自己是一份xml文檔

2, 對名稱空間(namespace)支持的很好

3.支持的類型比dtd更豐富約束的更細緻 能夠支持自定義的類型

4.Schema正在逐步替換dtd 在android中清單文件和佈局文件 用到了schema約束技術

 

1.Xml的約束技術 做用 規範xml文件的書寫(標籤 屬性 文本)

2.  Xml約束 經常使用的技術 dtd schema

3.Android用到的約束 schema

4.名稱空間 namespace

 

13_xml的解析和domj解析說明

 

Xml解析

Xml解析的三種方式:

Dom 解析

Sax解析

Pull解析

 

Dom解析

<html>

  <head>

  <title>HTML DOM</title>

  </head>

 <body>

 <h1>DOM的結構</h1>

   <p><a href=」href」>連接</a></p>

  <body>

</html>

 

Dom解析

根據xml層次結構在內存中分配一個屬性結構

在XML DOM每一個元素 都會被解析爲一個節點node ,而經常使用的節點類型又分爲

  元素節點 Elemeht

  屬性節點 Attr

  文本節點 Text

  文檔節點 Document

優缺點

Dom解析xml的優勢

由於分配了一個樹形結構,很方便的實現增長修改刪除的操做

缺點:

若是要解析的文件過大,一次性在內存中分配一個樹形結構,形成內存的溢出

 

①   把整個文檔先加載到內存中->Document 因此能夠對文檔進行修改

②   若是這個文件比較大 可能會致使內存溢出

 

DOM&SAX解析開發包

JAXP是sun公司推出的解析標準實現

Dom4J:開源組織推出的解析開發包

 

JAXP:(Java API for XML Processing)開發包是JavaSE的一部分,它由如下幾個包及其子包組成:

 org.w3c.dom:提供DOM方式解析XML的標準接口

 org.xml.sax:提供SAX方式解析XML的標準接口

 javax.xml:提供瞭解析XML文檔的類

javax.xml.parsers包中,定義了幾個工廠類,用來得到DOM和SAX解析器對象

  DocumenBuilderFactory

  SAXParserFactory

 

編程思路 DocunmentBuilderFactory->DocumentBuilder->Document->經過節點得到NodeList->具體的Node

若是想修改TransformerFactory->Transformer->transform(Source,result)

import javax.swing.text.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.NodeList;
public class DomparseTest {
@TEST
public void domParse() throws Exception{
        //獲取DocumentBuilderFactory
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
//獲取DocumentBuilder
DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder();
//經過DocumentBuilder據誒系xml文檔得到Docment對象
Document document = documentBuilder.parse("book.xml");
//經過元素的名字能夠找到元素的集合
NodeList nodeList = document.getElmentsByTagName("售價");
//nodeList.getLength();
For(int i=0;i<nodeList.getLength();i++){
Node node =nodeList.item(i);
String content = node.getTextContent();
System.out.println(content);
}
//找到第二個元素
Node node = nodeList.item(0);
//讀出對應節點的文本內容
String content = node.getTextContent();
System.out.println(content);

@Test
Public void domModifyxml() throws Exception{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Documnt document = builder.parse(「book.xml」);
Node node = nodeList.item(i);
//修改節點的內容
Node.setTextContent(「199.00元」);
TranformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFaactory.newTransformer();
//數據源
Source xmlSource = new DomSource(document);
Result outputTarget = new StreamResult(「book.xml」);
Transformer.transform(xmlSourse,outputTarget);
}
}

15_SAX解析

SAX解析的方式:邊讀邊解析

當使用SAX方式讀到特定的標籤時候,自動調用相應大的方法進行操做

SAX解析XML的優勢:

 不會形成內存溢出

SAX解析XML的缺點:

 不能修改XML文件

package com.nbdhyu.temp;

import java.util.logging.Handler;

import javax.sql.rowset.spi.XmlReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.junit.Test;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SaxParserTest {
    @Test
    public void saxParse() throws Exception{
        //獲取工廠
        SAXParserFactory parserFactory=SAXParserFactory.newInstance();
SAXParser saxParser=parserFactory.newSAXParser();
        //獲取xmlRead經過這個reader能夠試着contenthandler
        XmlReader xmlReader=saxParser.getXMLReader();
        //給xmlReader設置contenthandler contenthandler是一個接口 裏面太多的方法沒實現
        //不去直接實現contenthandler 而是繼承他默認的實現DefaultHandler
        xmlReader.setContentHandler(new Myhandle());
        //解析xml文檔
        xmlReader.parse("book.xml");        
    }
    private class Myhandle extends DefaultHandler{
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            // 文本內容
        String text=new String(ch,start,length);
        System.out.println("文本內容");
        }
         @Override
        public void endDocument() throws SAXException {
            System.out.println("文檔結束");                
        }
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            System.out.println("結束標籤<"+qName+">");    
        }
         @Override
        public void startDocument() throws SAXException {
            System.out.println("文檔開始");        
        }
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes)
                throws SAXException {
            System.out.println("開始標籤</"+qName+">");    
        };
    }
}
@Test
    public void saxParserTest2() throws Exception{
        SAXParserFactory parserFactory=SAXParserFactory.newInstance();
        SAXParse parser=parserFactory.newSAXParser();
        XmlReader reader=parser.getXMLReader();
        reader.setContentHandler(new DefaultHandler(){
            boolean isPrice=false;
            int count=0;
            @Override
            public void characters(char[] ch, int start, int length) throws SAXException {
                if (isPrice&&count=2) {
                    System.out.println(new String(ch,start,length));
                    
                }
            }

            @Override
            public void endElement(String uri, String localName, String qName) throws SAXException {
                // TODO Auto-generated method stub
                super.endElement(uri, localName, qName);
            }

            @Override
            public void startElement(String uri, String localName, String qName, Attributes attributes)
                    throws SAXException {
                if("售價",equals(qName)){
                    isPrice=true;
                    count++;
                }
            }    
        });
        reader.parse("book.xml");

    }

16_sax解析xml轉換爲arraylist

修改代碼

@Test
    public void saxParse2list() {
        SAXParserFactory parserFactory=SAXParserFactory.newInstance();
        SAXParser parser=parserFactory.newSAXParser();
        XmlReader reader=parser.getXMLReader();
        reader.setContentHandler(new DefaultHandler(){
            ArrayList<Book>bookshelf=null;
            Book book=null;
            String tag=null;

            @Override
            public void characters(char[] ch, int start, int length) throws SAXException {
                if ("書名".equals(tag)) {
                    book.setTitle(new String(ch, start, length));
                }else if ("做者".equals(tag)) {
                    book.setAuther(new String(ch, start, length));
                }else if ("售價".equals(tag)) {
                    book.setPrice(new String(ch, start, length));
                }
            }
             @Override
            public void endElement(String uri, String localName, String qName) throws SAXException {
                //每次走到結束標籤,就要把tag標籤結束
                tag=null;
                if ("書架".equals(qName)) {
                   for(Book book1:bookshelf){
                       System.out.println(book1);
                   }
                }else if ("書".equals(qName)) {
                    //讀到書結束標籤 把book對象添加到集合中
                    bookshelf.add(book);
                }
            }
             @Override
            public void startElement(String uri, String localName, String qName, Attributes attributes)
                    throws SAXException {
                if ("書架".equals(qName)) {
                    //建立集合
                    bookshelf=new ArrayList<Book>();
                }else if ("書".equals(qName)) {
                    book=new Book();
}else if ("書名".equals(qName)) {
                    tag="書名";
                }else if ("做者".equals(qName)) {
                    tag="做者";
                }else if ("售價".equals(qName)) {
                    tag="售價";
                }
            }    
        });    
        reader.parse("book.xml");
    }

17_pull原理

首先,導入pull的jar包(兩個JAR包)。原理其實就是sax解析

使用pull解析xml文件把xml中的內容放到集合裏面

步驟:

一、  建立解析器工廠

二、  根據解析器工廠建立解析器

三、  把要操做的文件放到解析器裏面

 

18_pull解析xml轉換爲集合

import java.awt.print.Book;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;

public class PullParserTest {
    @Test
    public void pullTest() throws Exception{
        ArrayList<Book> books=null;
        Book book=null;
        boolean flag=true;
        //獲取工廠
        XmlPullParserFactory parserFactory=XmlPullParseFactory.newInstance();
        //獲取到xml的解析器
        XmlPullParser parser=PullParseFactory.newPullParser();
        //給解析器設置一個輸入源
        //第一個參數輸入流 第二個參數是文檔用到的字符輸入流
        parser.setInput(new FileInputStream(new File("book.xml")),"utf-8");
        //獲取當前事件類型
        int eventType=parser.getEventType();
        while (eventType!=XMLPullParser.END_DOCUMENT) {
            switch (eventType) {
            case XmlPullParser.START_TAG:
            //開始標籤    
                //parser.getName()獲取當前事件對應的元素名字
                if("書架".equals(parser.getName())){
                    //建立一個集合
                    books=new ArrayList<Book>();
                }else if("書".equals(parser.getName())){
                    //建立一個book對象
                    book=new Book(); 
                }else if("書名".equals(parser.getName())){
                    //給book對象設置書名的屬性
                    book.setTitle (parser.nextText());//parser.nextText()獲取當前節點的下一個文本內容
                }else if("做者".equals(parser.getName())){
                    //給book對象設置做者的屬性
                    book.setAuthor(parser.nextText());
                }else if("售價".equals(parser.getName())){
                    //給book對象設置售價的屬性
                    book.setPrice(parser.nextText()); 
                }
                break;
            case XmlPullParser.END_TAG:
            //結束標籤
                if("書".equals(parser.getName())){
                    //把book對象添加到集合中
                    books.add(book);
                    flag=false;
                }
            default:
                break;
            }        
            //調用parser.next方法解析下一個元素 用這個結果來更新eventtype,若是解析到文檔結束,那麼就會退出循環
            //若是不更新,就會是死循環了
            eventType=parser.next();
            
        }
        //遍歷集合
        for (Book book1:books) {
            System.out.println(book1);
        }
    }
}

19_json介紹和解析

JSON(JavaScript Object Notation)JavaScript對象表示法,一種簡單的數據格式,比xml更輕巧。JSON是JavaScript原生格式,這意味着在JavaScript中處理JSON數據不須要任何特殊的API或工具包

JSON的規則很簡單:

 映射用冒號(「,」)表示,名稱:值

 並列的數據之間用逗號(「,」)分隔,名稱1:值1,名稱2:值2

 映射的集合(對象)用大括號(「{}」)表示,(名稱1:值1,名稱2:值2)

 並列數據的集合(數組)用方括號(「[]」)表示

[

 {名稱1:值1,名稱2:值2}

 {名稱1:值1,名稱2:值2}

]

 元素值可具備的類型:string,number,object,srray,true,false,null

 

JSON的兩種格式

寫法[JSON對象1,JSON對象2····]

在數組裏面有多個JSON對象,多喝JSON對象之間使用逗號隔開

具體數據的格式

[{「name」:」lucy」,」age」:20},{「name」:」mary」,」age」:30}]]

<name>lucy</name>

Json的解析

有不少開源的解析json框架,例如org.json,  json-lib,  gson等。

 

常見的api:

//將json字符串轉成jsonobject對象

JSONObject jb=new JSONObject(String source);

Object get(String key)

Int getint(String key)

String getString(String key)

JSONArray getJSONArray(String key);

 

//將json字符串轉出JSONArray對象

JSONArray jsArray =new JSONArray(String source);

package com.dhy.json;

import org.junit.Test;

public class JsonParseDeno {
    @Test
    public void jsonTest(){
        String jString="{"name":"張三","age":"20"}";
        //經過一個具備json格式的字符串就能夠建立一個json對象
        JSONObject jb=new JSONObject(srting);
        //獲取json對象以後 就能夠經過key去取值,根據需求選擇相應的getXXX方法
        //能夠獲取的數據類型 string int long double boolean object
        String name=Obj.getString("name");
        int age=Obj.getInt("age");
        System.out.println("名字"+name+"age"+age);
        
        String jsonArray="[{"name":"張三","age":"20"},"{"name":"李四","age":"22"}]";
        //根據一個具備json數組格式的字符串 建立一個json數組對象
        JSONArray array=new JSONArray(jsonArray);
        for (int i = 0; i < array.length(); i++) {
            //根據索引 取出每個jsonobject
            jsonArray jsonObject=array.getJSONObject(i);
            name=jsonObject.getString("name");
            System.out.println(name);
        }
    }
}

20_內容回顧

 

相關文章
相關標籤/搜索