Android JSON 解析示例

一般来说,JSON(JavaScript 对象表示法)是用于交换来自服务器的数据的最简单的数据交换格式之一,它是 XML 的最佳替代方案。简单来说,我们可以说 JSON 是一种轻量级的结构化语言。

 

Android 支持JSONObjectJSONArrayJSONStringer等所有 JSON 类解析 JSON 数据以获取 android 应用程序中所需的信息。

 

JSON 的主要优点是,它独立于语言,JSON 对象将包含键/值对等数据。

 

以下是 Android 应用程序中 JSON 数据的示例结构。

{

    "users": [

        {

            "name": "Suresh Dasari",

            "designation": "Team Leader",

            "location": "Hyderabad"
        },

        {

            "name": "Rohini Alavala",

            "designation": "Agricultural Officer",

            "location": "Guntur"
        }

    ]
}

通常,JSON 节点将以方括号[ ) 或花括号{ ) 开头。方括号和大括号的区别在于,方括号[)代表一个JSONArray节点的开始,而大括号{)代表一个JSONObject,所以我们需要调用适当的方法来获取数据。

 

如果 JSON 数据以[开头,那么我们需要使用getJSONArray()方法来获取数据,同样如果它以{开头,那么我们需要使用getJSONObject()方法。

Android 中的 JSON 解析

要在 android 中解析 JSON 数据,我们需要创建一个JSONObjectJSONArray对象的实例,其中包含一个包含 JSON 数据的字符串。

 

以下是使用 JSONObject 和 JSONArray 对象在 android 中解析 JSON 数据以从 JSON 对象中获取所需信息的代码片段。

 

JSONObject jObj = new JSONObject(jsonStr);
JSONArray jsonArry = jObj.getJSONArray("users");
for(int i=0;i user = new HashMap<>();
    JSONObject obj = jsonArry.getJSONObject(i);
    user.put("name",obj.getString("name"));
    user.put("designation",obj.getString("designation"));
    user.put("location",obj.getString("location"));
    userList.add(user);
}

如果您观察上面的代码片段,我们使用JSONObjectJSONArray对象来解析数据以从包含 JSON 数据的字符串中获取所需的信息。

 

现在我们将通过示例了解如何解析 JSON 字符串并将解析后的 JSON 绑定到Android 应用程序中的Listview。

Android JSON 解析示例

以下是在 Android 应用程序中使用JSON类解析 JSON 字符串并从中获取所需信息的示例。

 

使用 android studio 创建一个新的 android 应用程序并将名称命名为JsonParserExample。如果您不知道在 android studio 中创建应用程序,请查看这篇文章Android Hello World App。

 

现在从\res\layout文件夹路径中打开activity_main.xml文件并编写如下所示的代码。

activity_main.xml



    

之后在/res/layout文件夹中创建另一个布局文件 ( list_row.xml ) 以在listview中显示数据 ,为此右键单击布局文件夹 → 添加新布局资源文件→ 命名为list_row.xml并编写如下代码如下所示。 

list_row.xml



    
    
    

现在从\java\com.tutlane.jsonparserexample路径打开你的主要活动文件MainActivity.java并编写如下所示的代码

MainActivity.java

package com.tutlane.jsonparserexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String jsonStr = getListData();
        try{
            ArrayList> userList = new ArrayList<>();
            ListView lv = (ListView) findViewById(R.id.user_list);
            JSONObject jObj = new JSONObject(jsonStr);
            JSONArray jsonArry = jObj.getJSONArray("users");
            for(int i=0;i user = new HashMap<>();
                JSONObject obj = jsonArry.getJSONObject(i);
                user.put("name",obj.getString("name"));
                user.put("designation",obj.getString("designation"));
                user.put("location",obj.getString("location"));
                userList.add(user);
            }
            ListAdapter adapter = new SimpleAdapter(MainActivity.this, userList, R.layout.list_row,new String[]{"name","designation","location"}, new int[]{R.id.name, R.id.designation, R.id.location});
            lv.setAdapter(adapter);
        }
        catch (JSONException ex){
            Log.e("JsonParser Example","unexpected JSON exception", ex);
        }
    }
    private String getListData() {
        String jsonStr = "{ \"users\" :[" +
                "{\"name\":\"Suresh Dasari\",\"designation\":\"Team Leader\",\"location\":\"Hyderabad\"}" +
                ",{\"name\":\"Rohini Alavala\",\"designation\":\"Agricultural Officer\",\"location\":\"Guntur\"}" +
                ",{\"name\":\"Trishika Dasari\",\"designation\":\"Charted Accountant\",\"location\":\"Guntur\"}] }";
        return jsonStr;
    }
}


 

如果您观察上面的代码,我们使用JSONObjectJSONArray对象根据我们的要求从 JSON 字符串中解析并获取所需的数据。

Android JSON 解析示例的输出

当我们在 android studio 中运行上述程序时,我们将得到如下所示的结果。

 

Android JSON 解析示例_第1张图片

 

这就是我们如何在 android 应用程序中解析 JSON 数据以根据我们的要求获取所需信息的方式。 

 

你可能感兴趣的:(android,json,java)