新聞客戶端json解析代碼,新聞客戶端json解析代碼

本文目錄一覽:

怎麼在android客戶端解析json數據

這個格式使用如下代碼解析try { JSONObject jsonObject = new JSONObject(json); JSONObject weatherinfo = jsonObject.getJSONObject(“weatherinfo”); System.out.println(weatherinfo.getString(“city”)); System.out.println(weatherinfo.getString(“cityid”)); System.out.println(weatherinfo.getString(“temp”)); System.out.println(weatherinfo.getString(“WD”));} catch (JSONException e) { e.printStackTrace();} 其中第一行代碼 JSONObject jsonObject = new JSONObject(json);//json 即為你的字元串 比如現在天氣信息是多個城市的,並非只有北京市。{“weatherinfo”:[{“city”:”北京”,”cityid”:”101010100″,”temp”:”4″,”WD”:”東風”,”WS”:”2級”,”SD”:”75%”,”WSE”:”2″,”time”:”10:45″,”isRadar”:”1″,”Radar”:”JC_RADAR_AZ9010_JB”,”njd”:”暫無實況”,”qy”:”1011″},{“city”:”天津”,”cityid”:”101010100″,”temp”:”4″,”WD”:”東風”,”WS”:”2級”,”SD”:”75%”,”WSE”:”2″,”time”:”10:45″,”isRadar”:”1″,”Radar”:”JC_RADAR_AZ9010_JB”,”njd”:”暫無實況”,”qy”:”1011″}]}以下代碼適用。 try { JSONObject jsonObject=new JSONObject(json); JSONArray jsonArray=jsonObject.getJSONArray(“weatherinfo”); for (int i=0;ijsonArray.length();i++){ JSONObject object = jsonArray.getJSONObject(i); System.out.println(object.getString(“city”)); System.out.println(object.getString(“cityid”)); System.out.println(object.getString(“temp”)); System.out.println(object.getString(“WD”)); }} catch (JSONException e) { e.printStackTrace();}

如何解析返回的json格式數據

json數據格式解析我自己分為兩種;

一種是普通的,一種是帶有數組形式的;

普通形式的:

伺服器端返回的json數據格式如下:

複製代碼代碼如下:

{“userbean”:{“Uid”:”100196″,”Showname”:”\u75af\u72c2\u7684\u7334\u5b50″,”Avtar”:null,”State”:1}}

分析代碼如下:

複製代碼代碼如下:

// TODO 狀態處理 500 200

int res = 0;

res = httpClient.execute(httpPost).getStatusLine().getStatusCode();

if (res == 200) {

/*

* 當返回碼為200時,做處理

* 得到伺服器端返回json數據,並做處理

* */

HttpResponse httpResponse = httpClient.execute(httpPost);

StringBuilder builder = new StringBuilder();

BufferedReader bufferedReader2 = new BufferedReader(

new InputStreamReader(httpResponse.getEntity().getContent()));

String str2 = “”;

for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2

.readLine()) {

builder.append(s);

}

Log.i(“cat”, “” + builder.toString());

JSONObject jsonObject = new JSONObject(builder.toString())

.getJSONObject(“userbean”);

String Uid;

String Showname;

String Avtar;

String State;

Uid = jsonObject.getString(“Uid”);

Showname = jsonObject.getString(“Showname”);

Avtar = jsonObject.getString(“Avtar”);

State = jsonObject.getString(“State”);

帶數組形式的:

伺服器端返回的數據格式為:

複製代碼代碼如下:

{“calendar”:

{“calendarlist”:

[

{“calendar_id”:”1705″,”title”:”(\u4eb2\u5b50)ddssd”,”category_name”:”\u9ed8\u8ba4\u5206\u7c7b”,”showtime”:”1288927800″,”endshowtime”:”1288931400″,”allDay”:false},

{“calendar_id”:”1706″,”title”:”(\u65c5\u884c)”,”category_name”:”\u9ed8\u8ba4\u5206\u7c7b”,”showtime”:”1288933200″,”endshowtime”:”1288936800″,”allDay”:false}

]

}

}

分析代碼如下:

複製代碼代碼如下:

// TODO 狀態處理 500 200

int res = 0;

res = httpClient.execute(httpPost).getStatusLine().getStatusCode();

if (res == 200) {

/*

* 當返回碼為200時,做處理

* 得到伺服器端返回json數據,並做處理

* */

HttpResponse httpResponse = httpClient.execute(httpPost);

StringBuilder builder = new StringBuilder();

BufferedReader bufferedReader2 = new BufferedReader(

new InputStreamReader(httpResponse.getEntity().getContent()));

String str2 = “”;

for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2

.readLine()) {

builder.append(s);

}

Log.i(“cat”, “” + builder.toString());

/**

* 這裡需要分析伺服器回傳的json格式數據,

*/

JSONObject jsonObject = new JSONObject(builder.toString())

.getJSONObject(“calendar”);

JSONArray jsonArray = jsonObject.getJSONArray(“calendarlist”);

for(int i=0;ijsonArray.length();i++){

JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);

CalendarInfo calendarInfo = new CalendarInfo();

calendarInfo.setCalendar_id(jsonObject2.getString(“calendar_id”));

calendarInfo.setTitle(jsonObject2.getString(“title”));

calendarInfo.setCategory_name(jsonObject2.getString(“category_name”));

calendarInfo.setShowtime(jsonObject2.getString(“showtime”));

calendarInfo.setEndtime(jsonObject2.getString(“endshowtime”));

calendarInfo.setAllDay(jsonObject2.getBoolean(“allDay”));

calendarInfos.add(calendarInfo);

}

總結,普通形式的只需用JSONObject ,帶數組形式的需要使用JSONArray 將其變成一個list。

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官網下載:)

然後將數據轉為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 ListPerson getPersons(String jsonStr)

{

ListPerson list = new ArrayListPerson();

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 在伺服器端生成json格式數據,在客戶端怎麼解析

因為這次要從伺服器端得到Json數據,並且通過解析之後把解析後的數據顯示在Android客戶端中,首先部署伺服器端代碼(直接使用Jsp/Servlet):

構造的Json數據如下:

[{“name”:”張三”,”address”:”北京”,”age”:20},{“name”:”李四”,”address”:”上海”,”age”:30},{“name”:”王五”,”address”:”深圳”,”age”:35}]

[一]伺服器端(Person.java省略):

①:數據構造JsonService.java

public class JsonService {

public static ListPerson getListPerson() {

ListPerson mLists = new ArrayListPerson();

mLists.add(new Person(“張三”, “北京”, 20));

mLists.add(new Person(“李四”, “上海”, 30));

mLists.add(new Person(“王五”, “深圳”, 35));

return mLists;

}

②:Servlet的代碼(包括構造Json數據,沒有使用Json數據轉換方法)JsonServlet.java

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(“text/html”);

response.setCharacterEncoding(“UTF-8”);

PrintWriter out = response.getWriter();

ListPerson persons = JsonService.getListPerson();

StringBuffer sb = new StringBuffer();

sb.append(‘[‘);

for (Person person : persons) {

sb.append(‘{‘).append(“\”name\”:”).append(“\””+person.getName()+”\””).append(“,”); sb.append(“\”address\”:”).append(“\””+person.getAddress()+”\””).append(“,”);

sb.append(“\”age\”:”).append(person.getAge());

sb.append(‘}’).append(“,”);

}

sb.deleteCharAt(sb.length() – 1);

sb.append(‘]’);

out.write(new String(sb));

out.flush();

out.close();

}

③:部署到Tomact 瀏覽器輸入直接訪問結果如下:

[{“name”:”張三”,”address”:”北京”,”age”:20},{“name”:”李四”,”address”:”上海”,”age”:30},{“name”:”王五”,”address”:”深圳”,”age”:35}]

至此伺服器端代碼編碼完成,下面進行客戶端代碼編寫; (二)客戶端(Person類,和展示數據的布局文件因為簡單省去) ①:獲取伺服器端的Json數據並且解析的工具類JsonParse.java 必要的需要導入的包省去

public class JsonParse {

/**

* 解析Json數據

*

* @param urlPath

* @return mlists

* @throws Exception

*/

public static ListPerson getListPerson(String urlPath) throws Exception {

ListPerson mlists = new ArrayListPerson();

byte[] data = readParse(urlPath);

JSONArray array = new JSONArray(new String(data));

for (int i = 0; i array.length(); i++) {

JSONObject item = array.getJSONObject(i);

String name = item.getString(“name”);

String address = item.getString(“address”);

int age = item.getInt(“age”);

mlists.add(new Person(name, address, age));

}

return mlists;

}

/**

* 從指定的url中獲取位元組數組

*

* @param urlPath

* @return 位元組數組

* @throws Exception

*/

public static byte[] readParse(String urlPath) throws Exception {

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

byte[] data = new byte[1024];

int len = 0;

URL url = new URL(urlPath);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

InputStream inStream = conn.getInputStream();

while ((len = inStream.read(data)) != -1) {

outStream.write(data, 0, len);

}

inStream.close();

return outStream.toByteArray();

}

}

②:主Activity類

public class MainActivity extends Activity {

private Button mButton;

private ListView mListView;

//使用IP不能使用localhost或者127.0.0.1,因為android模擬器默認綁定這個IP,這裡應該訪問區域網IP

private static final String urlPath = “”;

private static final String TAG = “MainActivity”;

private ListPerson persons;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mButton = (Button) findViewById(R.id.button1);

mListView = (ListView) findViewById(R.id.listView1);

mButton.setOnClickListener(new MyOnClickListener());

}

private class MyOnClickListener implements OnClickListener {

@Override

public void onClick(View v) {

try {

// 得到Json解析成功之後數據

persons = JsonParse.getListPerson(urlPath);

ListHashMapString, Object data = new ArrayListHashMapString, Object();

for (int i = 0; i persons.size(); i++) {

HashMapString, Object map = new HashMapString, Object();

map.put(“name”, persons.get(i).getName());

map.put(“address”, persons.get(i).getAddress());

map.put(“age”, persons.get(i).getAge());

data.add(map);

}

//初始化適配器,並且綁定數據

SimpleAdapter _Adapter = new SimpleAdapter(MainActivity.this,

data, R.layout.listview_item, new String[] { “name”,

“address”, “age” }, new int[] { R.id.textView1,

R.id.textView2, R.id.textView3 });

mListView.setAdapter(_Adapter);

} catch (Exception e) {

Toast.makeText(MainActivity.this, “解析失敗”, 2000).show();

Log.i(TAG, e.toString());

}

}

}

JSON解析。

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class BMI

{

public static void main(String[] args)

{

String res =

        “{\”showapi_res_code\”:0,\”showapi_res_error\”:\”\”,\”showapi_res_body\”:{\”ret_code\”:0,\”basic\”:{\”explains\”:[\”n. 代碼,密碼;編碼;法典\”,\”vt. 編碼;製成法典\”,\”vi. 指定遺傳密碼\”]}}}”;

JSONObject obj = JSONObject.fromString(res);

JSONObject body = obj.getJSONObject(“showapi_res_body”);

JSONObject basic = body.getJSONObject(“basic”);

JSONArray explains = basic.getJSONArray(“explains”);

for(int i = 0; i  explains.length(); i++)

{

System.out.println(explains.get(i));

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194550.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 14:39
下一篇 2024-12-02 14:39

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論