如何在我的Android应用程序中解码JSON值?

时间:2014-05-18 19:30:03

标签: php android json

大家好我试图将JSON值解码到我的Android应用程序中,但我不确定我的代码中出错了什么...

这是我的PHP文件:

<?php 

    ... 
    echo json_encode($mostrar_player);
    ...

?>

这将返回给我这样的内容: [&#34; 1&#34;,&#34;管理员&#34;,&#34; 123&#34;,&#34; Adm&#34; &#34;消息&#34;&#34; 0&#34;]

在我的Android应用程序中我需要将该值放入数组中,我可以选择值separeted,但是如何?

这是我的Android代码:

        EditText campoLogin = (EditText)findViewById(R.id.campo_de_login);
        EditText campoSenha = (EditText)findViewById(R.id.campo_de_senha);

        toast("Conectando...");
        Conectar Conn = new Conectar("http://website/chat/login.php?login=" + campoLogin.getText() + "&senha=" + campoSenha.getText() );
        Log.i("-RESPOSTA-",Conn.response); 
        // HERE IN Conn.response I have my response ["1","Admin","Admin","Admin","affs","0"]

        String json_str = Conn.response;
        JSONObject json = new JSONObject(json_str);
        JSONArray jArray = json.getJSONArray("msg");

        //Log.i("JSON",json_data.getString("msg"));

3 个答案:

答案 0 :(得分:0)

尝试

 <?php   echo json_encode($mostra_player, JSON_FORCE_OBJECT); ?> 

强迫成为一个对象。

然后你可以使用

在java / android中访问它
JSONObject obj = (JSONObject) new JSONTokener(json_string_output).nextValue();
String yourdata= obj.getString("yourdata");

如果你想要一个阵列试试

<?php echo json_encode(array("data" => $mostra_player)); ?>

        JSONObject json = new JSONObject(responsedata);
        JSONArray jArray = json.getJSONArray("posts");
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject e = jArray.getJSONObject(i);
            JSONObject jObject = new JSONObject(e.getString("data"));

            Log.d("yourdata", jObject.getString("yourdata"));
            Log.d("moredata", jObject.getString("moredata"));
        }

答案 1 :(得分:0)

您可以通过几种方式实现这一目标。

我个人喜欢在Android中使用内置的JSON解析器

JSONObject jObject = new JSONObject(result);

您还可以使用Google的json解析库 https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html

另请参阅此链接以获取有关如何实际解析JSON以及获取可在程序中使用的字符串的详细信息。 How to parse JSON in Android

答案 2 :(得分:0)

我会尽力回答: -

  1. 根据你的代码,你有这个字符串["1","Admin","123","Adm","messages","0"],这显然是一个jsonarray,但你在android中解析为jsonobject。

  2. 因为@Boban说你不能在主线程上运行网络操作所以请避免使用dat。

  3. 现在按照我在1中提到的回答你将如何做: -

    JSONArray jArray=new JSONArray(json_str)
    String id=jArray.getString(0);
    String admin=jArray.getString(1);
    .
    .
    .
    

    希望它有所帮助......如果我错了,请纠正我:)

    THX