android:创建json对象还是数组?

时间:2012-09-04 17:01:18

标签: android json parsing object

我每天都在学习关于android开发和json代码的更多信息。 但现在我坚持这个; 我可以从我的在线数据库中获取我的值并显示它,但我看到了整个json代码。 我希望看到我希望它展示的部分。

这是我的代码,我认为它非常基本,但我也在学习:)

正如你所看到的那样,我只是从网页上获取值并将其放入我的textview中,但是我想把它放在JSONObject或JSONArray中,不知道是不是更好。

有人可以帮助我吗?

亲切的问候

public class Bordje extends Activity{

public void onCreate (Bundle savedInstanceState) {
    try
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bordje);

        //This is out textview element, obtained by id from XML Layout
        TextView myListView = (TextView)findViewById(R.id.netResult2);

        //Lets connect to the internet
        try {
            String result = "";
            //create new client object
            HttpClient httpclient = new DefaultHttpClient();
            //now post to the url
            HttpPost httppost = new HttpPost("http://www.wvvzondag2.nl/android/leesbordje.php");
            //execute url
            HttpResponse response = httpclient.execute(httppost);
            //get message from the response
            HttpEntity entity = response.getEntity();
            //get the content from message
            InputStream webs = entity.getContent();

            //convert response to string
            try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(webs, "iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                //slow our inputstream
                webs.close();
                //puts the resut into a string
                result=sb.toString();
            }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
            }

            //Parsing the JSON Data
            try{
                JSONArray jArray = new JSONArray(result);
                for(int i=0;i<jArray.length();i++){
                        JSONObject json_data = jArray.getJSONObject(i);
                        json_data.getString("introtext");
                        //Get an output to the screen
                        //then here should be some code that displays text?
                        //myListView.setText(Html.fromHtml(json_data)); ?
                }

            }catch(JSONException e){
                    Log.e("log_tag", "Error parsing data "+e.toString());
            }

        }catch(Exception e){
            Log.e("log_tag", "Error in http connection"+e.toString());
        }

    }
    catch (Exception e)
    {
        //this is the line of code that sends a real error message to the log
        Log.e("ERROR", "ERROR IN CODE: " + e.toString());
    }
}

2 个答案:

答案 0 :(得分:2)

这不是一个更好的问题。 JSON对象和JSON数组是两回事。

JSON数组是(类似)项目的有序序列(http://www.json.org/javadoc/org/json/JSONArray.html)。

JSONArray jsonArray = new JSONArray("[JSON TEXT]");
String textToDisplay = jsonArray.getString(index); //return String at index

JSON对象是一张地图(http://www.json.org/javadoc/org/json/JSONObject.html)。

JSONObject jsonObj = new JSONObject("[JSON TEXT]");
String textToDisplay = jsonObj.getString("key"); //returns String value

然后,在获得数据之后,像以前一样在文本视图中设置它。

myListView.setText(textToDisplay);

答案 1 :(得分:0)

如果你从服务器获得有效的json,你只需要根据你得到的对象制作一个JSONArrayJSONObject,所以没有必要说哪一个更好。但是在你的情况下,它很可能是一个JSONArray。

为了实现这一点,您可以使用gson将有效的json字符串转换为JSONObjectJSONArray

您将使用.toJson().fromJSON(object)方法。