Android Jason 데이터 분석 및 표시

12559 단어 Android개발 편
선언:
최근 한 앱 의 수정 작업 으로 바 쁜 와 중 에 제 이 슨 에 게 데이터 패 키 징 과 해석 을 하 는 곳 이 많다 는 것 을 알 게 되 었 습 니 다. 지금 은 작은 예 를 통 해 정리 하고 있 습 니 다.
제 이 슨 이 뭐야?가 벼 운 데이터 교환 형식 으로 읽 을 수 있 고 빠르게 작성 할 수 있 는 특성 이 있 습 니 다.업계 의 주류 기술 은 이 를 위해 완전한 해결 방안 (정규 표현 식 과 유사 하고 현재 대부분의 언어 지원 을 받 았 다) 을 제공 하여 서로 다른 플랫폼 에서 데이터 교환 을 할 수 있다.JSON 은 호환성 이 높 은 텍스트 형식 을 사용 하 는 동시에 C 언어 체계 와 유사 한 행 위 를 가진다.Json.org
Jason VS XML
> 1.JSON XML          

2.JSON XML           

3.JSON   XML  ,      

4.JSON JavaScript       

5.JSON        XML  

6.JSON        XML

안 드 로 이 드 2.3 제 이 슨 분석 류
안 드 로 이 드 의 json 분석 부분 은 모두 가방 org. json 에 있 는데 주로 다음 과 같은 몇 가지 유형 이 있 습 니 다.
JSONObject:
json 대상 으로 볼 수 있 습 니 다. 이것 은 시스템 에서 JSON 정의 에 관 한 기본 단원 으로 한 쌍 의 아 (Key / Value) 수 치 를 포함 합 니 다.외부 (External: toString () 방법 으로 출력 하 는 수치) 에 대한 응답 은 표준 문자열 (예 를 들 어 {"JSON": "Hello, World"}, 가장 큰 괄호 로 둘러싸 여 있 으 며, 그 중 Key 와 Value 는 사칭 ":" 구분) 로 표 시 됩 니 다.내부 (Internal) 행동 에 대한 동작 형식 이 약간 있 습 니 다. 예 를 들 어 JSonobject 인 스 턴 스 를 초기 화하 고 내부 의 put () 방법 을 참조 하여 수 치 를 추가 합 니 다. new JSonobject (). put ("JSON", "Hello, World!") 는 Key 와 Value 사이 에 쉼표 로 구 분 됩 니 다. "Value 의 유형 은 Boolean, JSONarray, JSONobject, Number, String 또는 기본 값 인 JSONobject. NULL object 를 포함한다.
JSONStringer:
json 텍스트 구축 클래스 는 공식 적 인 해석 에 따라 빠 르 고 편리 하 게 JSON text 를 만 드 는 데 도움 을 줄 수 있 습 니 다.가장 큰 장점 은 형식 오류 로 인 한 프로그램 이상 을 줄 일 수 있다 는 점 입 니 다. 이 종 류 를 참조 하면 JSON 문법 규칙 (syntax rules) 에 따라 JSON text 를 자동 으로 엄 격 히 만 들 수 있 습 니 다.모든 JSONstringer 실 체 는 JSON text 를 만 드 는 것 에 대응 할 수 있 습 니 다.가장 큰 장점 은 형식 오류 로 인 한 프로그램 이상 을 줄 일 수 있다 는 점 입 니 다. 이 종 류 를 참조 하면 JSON 문법 규칙 (syntax rules) 에 따라 JSON text 를 자동 으로 엄 격 히 만 들 수 있 습 니 다.모든 JSONstringer 실 체 는 JSON text 를 만 드 는 것 에 대응 할 수 있 습 니 다.
JSONArray:
그것 은 질서 있 는 수 치 를 대표 한다.이 를 String 출력 (toString) 으로 변환 하 는 형식 은 괄호 로 감 싸 고 수 치 는 쉼표 로 표시 합 니 다. "구분자 (예 를 들 어 [value 1, value 2, value 3] 는 간단 한 코드 를 직접 이용 하여 그 형식 을 직관 적 으로 이해 할 수 있 습 니 다.이 종류의 내부 역시 조회 행 위 를 가지 고 있 습 니 다. get () 과 opt () 두 가지 방법 은 모두 index 색인 을 통 해 지정 한 수 치 를 되 돌려 주 고 put () 방법 으로 수 치 를 추가 하거나 교체 할 수 있 습 니 다.같은 종류의 value 유형 은 Boolean, JSONarray, JSONobject, Number, String 또는 기본 값 JSONobject. NULL object 를 포함 할 수 있 습 니 다.
JSONTokener:
json 해석 클래스
JSONException:
json 에 사용 되 는 이상.
==============================================
====================================================================================================
MyTestAPP
이 작은 예 는 JSONarray 와 JSONobject 로 데 이 터 를 분석 하 는 동시에 Android 의 동적 레이아웃 설정 ListView 와 결합 하여 String 에서 추출 한 데 이 터 를 표시 합 니 다.
텍스트 를 만 드 는 방법: Code:
//            json    
//  {  
//      "phone" : ["12345678", "87654321"], //     
//      "name" : "yuanzhifei89", //      
//      "age" : 100, //     
//      "address" : { "country" : "china", "province" : "jiangsu" }, //     
//      "married" : false //      
//  }  

try {  
    //       {},         
    JSONObject person = new JSONObject();  
    //     phone     ,            
    JSONArray phone = new JSONArray();  
    phone.put("12345678").put("87654321");  
    person.put("phone", phone);  

    person.put("name", "yuanzhifei89");  
    person.put("age", 100);  
    //  address     ,            
    JSONObject address = new JSONObject();  
    address.put("country", "china");  
    address.put("province", "jiangsu");  
    person.put("address", address);    
    person.put("married", false);  
} catch (JSONException ex) {  
    //   null   json        (NaN, infinities)  
    throw new RuntimeException(ex);  
}  

내 앱 에서 String 은 데이터베이스 에서 추출 한 데 이 터 를 3 개 저장 합 니 다.
new JSONArray(result); 문자열 을 jason 대상 과 연결 합 니 다.
JSONobject 는 데이터 시트 로 볼 수 있 습 니 다. 뒤쪽 작업 은 옮 겨 다 니 는 부분 입 니 다.
Code:
package com.elvis.jasonlistview;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {


    public final String result = "[{'TypeId':1,'QId':73,'IsunAnswer':false,'QTitle':'      ,     ()g/cm3.','Point':'10.00','EId':73,'QAnswer':'B','QAnswerCount':4,'QBody':'A.8.96
B.7.87
C.2.7
D.1.74','QMark':'','QAnswerKey':'','examKey':'E38B46B2442442F5A1'},"
+ " {'TypeId':2,'QId':73,'IsunAnswer':false,'QTitle':' , ()g/cm3.','Point':'10.00','EId':74,'QAnswer':'B','QAnswerCount':4,'QBody':'A.8.96
B.7.87
C.2.7
D.1.74','QMark':'','QAnswerKey':'','examKey':'E38B46B2442442F5A1'},"
+ " {'TypeId':3,'QId':73,'IsunAnswer':false,'QTitle':' , ()g/cm3.','Point':'10.00','EId':73,'QAnswer':'B','QAnswerCount':4,'QBody':'A.8.96
B.7.87
C.2.7
D.1.74','QMark':'','QAnswerKey':'','examKey':'E38B46B2442442F5A1'}]"
; private JSONArray jsa; private ListView listView; private List data; JSONObject obj = null; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); try { initView(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void initView() throws JSONException { listView = new ListView(this); data = new ArrayList(); jsa = new JSONArray(result); String title = null; for (int i = 0; i < jsa.length(); i++) { obj = jsa.getJSONObject(i); title = obj.getString("TypeId"); title += " " + obj.getString("QTitle"); data.add(title); } listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1,data)); setContentView(listView); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

위의 코드 는 Array Adapter (Context context, int textView ResourceId, List objects) 를 사용 하여 데 이 터 를 조립 합 니 다. 이 데 이 터 를 조립 하려 면 ListView 보기 대상 과 배열 데 이 터 를 연결 하 는 어댑터 가 필요 합 니 다.
Array Adapter 의 구 조 는 this, 레이아웃 파일 세 개의 인자 가 필요 합 니 다. (이 레이아웃 파일 은 목록 의 모든 줄 의 레이아웃 을 설명 합 니 다. android. R. layot. simple list item 1 은 시스템 이 정의 한 레이아웃 파일 로 한 줄 의 텍스트 만 표시 하고 데이터 원본 (하나의 List 집합) 입 니 다.
동시에 setAdapter () 로 적합 한 마지막 작업 을 완성 합 니 다.
제 이 슨 이 Http 요청 을 하 는 표준 프로 세 스 를 첨부 합 니 다:
Code:
        JSON      :

HttpPost request = new HttpPost(url); 
//       JSON    
JSONObject param = new JSONObject(); 
param.put("name", "rarnu"); 
param.put("password", "123456"); 
//       Entry 
StringEntity se = new StringEntity(param.toString());  
request.setEntity(se); 
//      
HttpResponse httpResponse = new DefaultHttpClient().execute(request); 
//         ,      JSON         
String retSrc = EntityUtils.toString(httpResponse.getEntity()); 
//    JSON    
JSONObject result = new JSONObject( retSrc); 
String token = result.get("token");

좋은 웹페이지 즐겨찾기