導航:首頁 > 操作系統 > androidurljson

androidurljson

發布時間:2024-11-09 02:08:12

① json 怎麼解析

一、 JSON (javaScript Object Notation)一種簡單的數據格式,比xml更輕巧。
Json建構於兩種結構:
1、「名稱/值」對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。 如:
{
「name」:」jackson」,
「age」:100
}

2、值的有序列表(An ordered list of values)。在大部分語言中,它被理解為鬧歲並數組(array)如:
{
「students」:
[
{「name」:」jackson」,「age」:100},
{「name」:」michael」,」age」:51}
]
}
二、java解析JSON步驟
A、伺服器端將數據轉換成json字元串
首先、伺服器端項目要導入json的jar包和json所依賴的jar包至builtPath路徑下(這些可以到JSON-lib官網下載:http://json-lib.sourceforge.net/)

然後將數據轉液跡為json字元串,核心函數是:
public static String createJsonString(String key, Object value)
{
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
B、客戶端將json字元串轉換為相應的javaBean
1、客雀御戶端獲取json字元串(因為android項目中已經集成了json的jar包所以這里無需導入)
public class HttpUtil
{

public static String getJsonContent(String urlStr)
{
try
{// 獲取HttpURLConnection連接對象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
// 設置連接屬性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 獲取相應碼
int respCode = httpConn.getResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConn.getInputStream());
}
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}

private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = "";
// ByteArrayOutputStream相當於內存輸出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 將輸入流轉移到內存輸出流中
try
{
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
{
out.write(buffer, 0, len);
}
// 將內存流轉換為字元串
jsonStr = new String(out.toByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}
2、獲取javaBean
public static Person getPerson(String jsonStr)
{
Person person = new Person();
try
{// 將json字元串轉換為json對象
JSONObject jsonObj = new JSONObject(jsonStr);
// 得到指定json key對象的value對象
JSONObject personObj = jsonObj.getJSONObject("person");
// 獲取之對象的所有屬性
person.setId(personObj.getInt("id"));
person.setName(personObj.getString("name"));
person.setAddress(personObj.getString("address"));
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

return person;
}

public static List<Person> getPersons(String jsonStr)
{
List<Person> list = new ArrayList<Person>();

JSONObject jsonObj;
try
{// 將json字元串轉換為json對象
jsonObj = new JSONObject(jsonStr);
// 得到指定json key對象的value對象
JSONArray personList = jsonObj.getJSONArray("persons");
// 遍歷jsonArray
for (int i = 0; i < personList.length(); i++)
{
// 獲取每一個json對象
JSONObject jsonItem = personList.getJSONObject(i);
// 獲取每一個json對象的值
Person person = new Person();
person.setId(jsonItem.getInt("id"));
person.setName(jsonItem.getString("name"));
person.setAddress(jsonItem.getString("address"));
list.add(person);
}
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}

② android用volley怎麼給伺服器發送json

1.下載官網的android SDK(本人用的是eclipse)

2.新建一個android項目:

File->new->andriod Application project

7、下面就是具體的使用post和get請求的代碼:

A:發送get請求如下:

package com.example.xiaoyuantong;

import java.util.HashMap;

import java.util.Iterator;

import org.json.JSONException;

import org.json.JSONObject;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.widget.TextView;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonObjectRequest;

import com.android.volley.toolbox.Volley;

/**

* Demo

*/

public class MainActivity extends Activity {

private RequestQueue requestQueue ;

@Override

protected void onCreate(Bundle savedInstanceState) {

簡旁模super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init();

}

private void init() {

TextView textView = (TextView)findViewById(R.id.textView);

requestQueue = Volley.newRequestQueue(this);

getJson();

textView.setText("hello");

}

private void getJson(){

String url = "http://192.168.20.1:8080/xiaoyuantong/userAction!register.action?pwd='測試'";

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(

Request.Method.GET, url, null,

new Response.Listener<JSONObject>() {

@Override

public void onResponse(JSONObject response) {

//這里可以列印出接受到返回的json

Log.e("bbb", response.toString());

攔緩}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError arg0) {

// System.out.println("sorry,Error");

Log.e("aaa", arg0.toString());

}

});

requestQueue.add(jsonObjectRequest);

}

}

B:發送post請求如下:

package com.example.xiaoyuantong;

import java.util.HashMap;

import java.util.Map;

import org.json.JSONException;

import org.json.JSONObject;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonObjectRequest;

import com.android.volley.toolbox.Volley;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.widget.TextView;

public class PostActivity extends Activity {

private RequestQueue requestQueue ;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_post);

init();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.post, menu);

return true;

}

private void init() {

TextView textView = (TextView)findViewById(R.id.postView);

requestQueue = Volley.newRequestQueue(this);

getJson();

textView.setText("hellopost");

}

private void getJson(){

String url = "http://192.168.20.1:8080/xiaoyuantong/userAction!reg.action";

JsonObjectRequest jsonObjectRequest ;

JSONObject jsonObject=new JSONObject() ;

try {

jsonObject.put("name", "張三");

jsonObject.put("sex", "女");

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

//列印前台向後台要提交的post數據

Log.e("post",jsonObject.toString());

//發送post請求

try{

jsonObjectRequest = new JsonObjectRequest(

Request.Method.POST, url, jsonObject,

new Response.Listener<JSONObject>() {

@Override

public void onResponse(JSONObject response) {

//列印請求後獲取的json數據

Log.e("bbb", response.toString());

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError arg0) {

// System.out.println("sorry,Error");

Log.e("aaa", arg0.toString());

}

});

requestQueue.add(jsonObjectRequest);

} catch (Exception e) {

e.printStackTrace();

System.out.println(e + "");

}

requestQueue.start();

}

}

8、在android的logcat裡面能查看到列印的請求

(紅色的顯示的是我在後台請求到數據)

有時候logcat顯示不出數據,可能是消息被過濾了,可以在左邊點擊「減號」刪除過濾

在server端,也就是在myeclipse的建立的另一個後台工程裡面能獲取到請求:


9、後續會補充json數據的解析部分,以及過度到移動雲的部分,上面只是c/s模式下的一個簡單的基於http的請求應答例子。

③ Android點擊簡訊鏈接打開App之App Link 技術實現(親證篇)

學習資料:

Android 點擊Url(簡訊鏈接)打開App 的調研與實現

Google App Link 技術實現(親證篇)

AppLinks使用詳解

實現方式分:Deep linking 與 Android App Links

Deep linking方式實現:具體可以參考 Android 點擊Url(簡訊鏈接)打開App 的調研與實現

Android App Links方式實現

第一步 驗證一個伺服器地址(例如https://asuss.ryit.co),成功驗證通過後,當用戶在簡訊中點擊於類似https://asuss.ryit.co/login的web鏈接,即可打開app本地相關頁面,我們在AndroidMenifest的啟動頁進行配置

第二步 assetlinks.json文件製作 Android Studio中Tools>App Link Assistants

這個文件只能放在https的鏈接中,不管你之前在action中聲明的是http或者https

第三步 驗證

1)打開瀏覽器訪問https://asuss.ryit.co/.well-known/assetlinks.json,正常應該看到該文件內容輸出。

2)訪問google api,查看app是否通過App Links驗證(需翻牆這步一定要做,有人反饋如果不做這步還是deeplink)

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://asuss.ryit.co(替換你的伺服器名)&relation=delegate_permission/common.handle_all_urls

3)在簡訊中編輯https://asuss.ryit.co,之後點擊url直接跳轉到應用中省去了跳轉到瀏覽器的選擇跳轉過程

注意:圖中url為個人虛擬url了,替換即可

散花,愛你們,我的安卓老兄弟們,安卓老姐們,我踩完坑了。

④ 請問android怎樣通過json數據從伺服器獲取圖片

android裡面,通過json數據是不會直接返回圖片的,只會返回圖片的url地址。
步驟: 1,通過解析json數據,獲取到圖片的地址。
2,通過圖片的地址,再一次的請求網路(用非同步任務或者hangdler裡面請求網路:比如:
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedInputStream is = new BufferedInputStream(conn.getInputStream());


3 通過BitmapFactory.decodeStream(裡面的參數是一個位元組流),該方法返回的是一個bitmap ,直接用imageview.setimagebitmap()就能展示圖片了。
說明: 在BitmapFactory.decodeStream這里返回的bitmap可以做進一步的優化,比如二次采樣,把獲取的bitmap存sd卡等等。。

⑤ Android:使用OkHttp發送HTTPGet請求,並解析所得的JSON數據。

在Android開發中,OkHttp作為首選的網路通信庫,因其簡單易用和高效性能而廣受歡迎。本文將指導你如何使用OkHttp發送HTTPGet請求,並解析返回的JSON數據。

步驟如下:

1. 首先,你需要在項目中添加OkHttp依賴。在`build.gradle`中添加相關代碼,OkHttp會自動下載並集成到你的項目中。

2. 創建一個`OkHttpClient`實例,接著創建一個`Request`對象。雖然初始對象是空的,但後續可以通過Builder方法添加請求細節。

3. 調用`OkHttpClient`的`newCall(Request)`方法創建`Call`對象,並通過`execute()`方法發送GET請求。伺服器返回的數據存儲在`response`中。

4. 對於POST請求,構建`RequestBody`,使用`POST`方法進行數據提交,同樣通過`execute()`獲取響應數據。

5. 數據通常以JSON格式傳輸,Android中常用Gson進行解析。例如,你可以創建一個JavaBean類,然後通過Gson將JSON轉換為對象。

6. 數據解析後,你可以將其展示在UI上,如創建一個MainActivity來演示。

7. 如果遇到重定向問題,記得調整`request.url()`。對於JSON文件的解析,只需根據Gson的API調整代碼即可。

8. 最後,確保你的項目環境中已經安裝了必要的服務,如Tomcat,以便進行JSON文件的讀取和解析。

通過以上步驟,你將能夠熟練地在Android應用中使用OkHttp發送HTTP請求,並解析JSON數據。記得根據項目需求靈活調整和優化你的網路請求和數據處理代碼。

閱讀全文

與androidurljson相關的資料

熱點內容
cmd提示符怎麼加密碼 瀏覽:323
股殤pdf 瀏覽:652
專業切割渦旋壓縮機設備 瀏覽:798
linux根目錄文件夾 瀏覽:219
缺少標識符編譯錯誤 瀏覽:356
什麼游戲ios和安卓都能玩 瀏覽:425
文件夾發QQ郵箱的話怎麼壓縮 瀏覽:946
scratch編程手機版怎麼下安卓 瀏覽:33
演算法導論影印 瀏覽:600
linuxstat文件 瀏覽:100
番禺程序員招聘信息 瀏覽:830
雲伺服器帶寬如何計算 瀏覽:854
海康威視取消加密密碼 瀏覽:11
華為的女程序員情況如何 瀏覽:378
安卓怎麼屏蔽系統 瀏覽:269
qt編譯rcexe 瀏覽:146
c編譯器在哪裡打開 瀏覽:644
電腦文件夾圖片轉換成word文檔 瀏覽:544
學生文件夾怎麼用小視頻 瀏覽:896
極客固件編譯 瀏覽:288