0

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

这是我的代码,我认为它真的很基础,但我也在学习:)

如您所见,我只是从网页中获取值并将其放入我的文本视图中,但我想将其放入 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());
    }
}
4

2 回答 2

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);
于 2012-09-04T17:07:04.403 回答
0

如果您从服务器获得有效的 json,您可以根据您获得的对象简单地制作一个JSONArrayJSONObject其中一个,因此没有必要说哪个更好。但是,在您的情况下,它很可能是 JSONArray。

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

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

于 2012-09-04T17:09:51.773 回答