0

このURLのjsonからこの2つの情報「matricula」と「nome」を取得する必要がありますが、これを行う方法がわかりません。このクラスを使用するのは良いオプションだと思いますが、url から json を取得するメソッドの使用方法がわかりません。また、json を取得した後に配列キーを操作する方法もわかりません。申し訳ありませんが、すべての作業をお願いしておりますが、それは私が Android 開発に不慣れで、jsonarray や jsonobjects などと本当に混乱しているためです..

4

3 に答える 3

0

私はこれをします:

matricula と nome の 2 つの列を持つデータベースから情報を取得すると仮定すると、配列を送信するので、このコードで配列を作成します。

 $json['test'][]=array( 'matricula'  => $row["matricula"], 'nome' =>$row["nome"])

次に、取得方法を知っていると仮定して、その情報を次のように解析します。

 JSONObject object = new JSONObject(jsonResult);
 JSONArray test = object.getJSONArray("test");
 for(int i = 0; i < test.length(); i++){
     JSONObject c = test.getJSONObject(i);
     String matricula= c.getString("matricula");
     String nome = c.getString("nome");
     //do whatever you want with it
 }
于 2013-08-28T18:04:42.557 に答える
0

Java のMap インターフェイスのような JsonObject :

値が関連付けられたキーを格納します。

例:

JsonObject obj = new JsonObject();
JsonObject obj1 = new JsonObject();
obj1.put("obj1_key1","obj1_value1");
obj1.put("obj1_key2","obj1_value2");
obj1.put("obj1_key3","obj1_value3");
obj.put("obj1",obj1);

JsonArray は、JavaのList Interfaceのようなものです。

0 から N までのインデックスを持つ値を格納します。

例:

JsonArray array = new JsonArray();
JsonObject obj  = new JsonObject();
obj.put("xxx","yyy");
array.add(obj);

json 文字列を取得する場合は、配列が で始まる場合は JsonArray を使用して解析する必要があることを覚えておいてください。配列が で始まる[]場合は、JsonObject を{}使用する必要があります。

ここで例を見ることができます

あなたのJSON

{"matricula":"201110460","nome":"Daniel de Faria Pedro"}

これは、従来の「マップ」スタイルのキーと値の関連付けがあるため、単なる JsonObject です。あなたがする必要があるのは簡単です:

try {
    URL url = new URL("http://tcc-teste.aws.af.cm/api/get/aluno/1");
    URLConnection connection = url.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line = "", json = "";
    while((line = reader.readLine())!=null){
        json+=line;
    }                    
    JsonObject yourObject = new JsonObject(json);
    String matricula = yourObject.get("matricula");
    String nome = yourObject.get("nome");
    System.out.println(nome+" - "+matricula);
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} catch (JSONException e) {
    e.printStackTrace();
}
于 2013-08-28T17:57:56.633 に答える