2016-01-31 36 views
0

我是新的JSON android studio我正在做一個非常簡單的JSON事情,我無法獲得JSONArray名稱。 我只想顯示「用戶名」參數。沒有數組名稱的JSONArray

這是JSON:

[ 
{ 
    id: 1, 
    name: "Leanne Graham", 
    username: "Bret", 
    email: "[email protected]", 
    address: { 
    street: "Kulas Light", 
    suite: "Apt. 556", 
city: "Gwenborough", 
zipcode: "92998-3874", 
geo: { 
lat: "-37.3159", 
lng: "81.1496" 
} 
}, 
phone: "1-770-736-8031 x56442", 
website: "hildegard.org", 
company: { 
name: "Romaguera-Crona", 
catchPhrase: "Multi-layered client-server neural-net", 
bs: "harness real-time e-markets" 
} 
}, 
{ 
id: 2, 
name: "Ervin Howell", 
username: "Antonette", 
email: "Shan[email protected]", 
address: { 
street: "Victor Plains", 
suite: "Suite 879", 
city: "Wisokyburgh", 
zipcode: "90566-7771", 
geo: { 
lat: "-43.9509", 
lng: "-34.4618" 
} 
}, 
phone: "010-692-6593 x09125", 
website: "anastasia.net", 
company: { 
name: "Deckow-Crist", 
catchPhrase: "Proactive didactic contingency", 
bs: "synergize scalable supply-chains" 
} 
}, 
{ 
id: 3, 
name: "Clementine Bauch", 
username: "Samantha", 
email: "[email protected]", 
address: { 
street: "Douglas Extension", 
suite: "Suite 847", 
city: "McKenziehaven", 
zipcode: "59590-4157", 
geo: { 
lat: "-68.6102", 
lng: "-47.0653" 
} 
}, 
phone: "1-463-123-4447", 
website: "ramiro.info", 
company: { 
name: "Romaguera-Jacobson", 
catchPhrase: "Face to face bifurcated interface", 
bs: "e-enable strategic applications" 
} 
}, 
{ 
id: 4, 
name: "Patricia Lebsack", 
username: "Karianne", 
email: "[email protected]", 
address: { 
street: "Hoeger Mall", 
suite: "Apt. 692", 
city: "South Elvis", 
zipcode: "53919-4257", 
geo: { 
lat: "29.4572", 
lng: "-164.2990" 
} 
}, 
phone: "493-170-9623 x156", 
website: "kale.biz", 
company: { 
name: "Robel-Corkery", 
catchPhrase: "Multi-tiered zero tolerance productivity", 
bs: "transition cutting-edge web services" 
} 
}, 
{ 
id: 5, 
name: "Chelsey Dietrich", 
username: "Kamren", 
email: "[email protected]", 
address: { 
street: "Skiles Walks", 
suite: "Suite 351", 
city: "Roscoeview", 
zipcode: "33263", 
geo: { 
lat: "-31.8129", 
lng: "62.5342" 
} 
}, 
phone: "(254)954-1289", 
website: "demarco.info", 
company: { 
name: "Keebler LLC", 
catchPhrase: "User-centric fault-tolerant solution", 
bs: "revolutionize end-to-end systems" 
} 
}, 
{ 
id: 6, 
name: "Mrs. Dennis Schulist", 
username: "Leopoldo_Corkery", 
email: "[email protected]", 
address: { 
street: "Norberto Crossing", 
suite: "Apt. 950", 
city: "South Christy", 
zipcode: "23505-1337", 
geo: { 
lat: "-71.4197", 
lng: "71.7478" 
} 
}, 
phone: "1-477-935-8478 x6430", 
website: "ola.org", 
company: { 
name: "Considine-Lockman", 
catchPhrase: "Synchronised bottom-line interface", 
bs: "e-enable innovative applications" 
} 
}, 
{ 
id: 7, 
name: "Kurtis Weissnat", 
username: "Elwyn.Skiles", 
email: "[email protected]", 
address: { 
street: "Rex Trail", 
suite: "Suite 280", 
city: "Howemouth", 
zipcode: "58804-1099", 
geo: { 
lat: "24.8918", 
lng: "21.8984" 
} 
}, 
phone: "210.067.6132", 
website: "elvis.io", 
company: { 
name: "Johns Group", 
catchPhrase: "Configurable multimedia task-force", 
bs: "generate enterprise e-tailers" 
} 
}, 
{ 
id: 8, 
name: "Nicholas Runolfsdottir V", 
username: "Maxime_Nienow", 
email: "[email protected]", 
address: { 
street: "Ellsworth Summit", 
suite: "Suite 729", 
city: "Aliyaview", 
zipcode: "45169", 
geo: { 
lat: "-14.3990", 
lng: "-120.7677" 
} 
}, 
phone: "586.493.6943 x140", 
website: "jacynthe.com", 
company: { 
name: "Abernathy Group", 
catchPhrase: "Implemented secondary concept", 
bs: "e-enable extensible e-tailers" 
} 
}, 
{ 
id: 9, 
name: "Glenna Reichert", 
username: "Delphine", 
email: "[email protected]", 
address: { 
street: "Dayna Park", 
suite: "Suite 449", 
city: "Bartholomebury", 
zipcode: "76495-3109", 
geo: { 
lat: "24.6463", 
lng: "-168.8889" 
} 
}, 
phone: "(775)976-6794 x41206", 
website: "conrad.com", 
company: { 
name: "Yost and Sons", 
catchPhrase: "Switchable contextually-based project", 
bs: "aggregate real-time technologies" 
} 
}, 
{ 
id: 10, 
name: "Clementina DuBuque", 
username: "Moriah.Stanton", 
email: "[email protected]", 
address: { 
street: "Kattie Turnpike", 
suite: "Suite 198", 
city: "Lebsackbury", 
zipcode: "31428-2261", 
geo: { 
lat: "-38.2386", 
lng: "57.2232" 
} 
}, 
phone: "024-648-3804", 
website: "ambrose.net", 
company: { 
name: "Hoeger LLC", 
catchPhrase: "Centralized empowering task-force", 
bs: "target end-to-end models" 
} 
} 
] 

,這是我的代碼:

package com.example.roa.jasonhw_31116; 

import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.TextView; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class MainActivity extends AppCompatActivity { 

TextView textView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    textView = (TextView) findViewById(R.id.textView); 
    JasonConn jasonConn = new JasonConn(); 
    jasonConn.execute("http://jsonplaceholder.typicode.com/users"); 
} 


public class JasonConn extends AsyncTask<String, Void, String >{ 


    HttpURLConnection connection = null; 
    BufferedReader reader = null; 
    String result = ""; 
    String username = ""; 


    @Override 
    protected String doInBackground(String... params) { 
     try { 
      URL url = new URL(params[0]); 
      // open the connection to the server (send request) 
      connection = (HttpURLConnection) url.openConnection(); 
      // check if response code is ok! 
      if(connection.getResponseCode() != HttpURLConnection.HTTP_OK){ 
       return "Error from server"; 
      } 
      reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
      String line; 
      if((line = reader.readLine()) != null){ 
       result += line; 
      } 

      JSONArray jArray = new JSONArray(result); 

      for(int i = 0; i<jArray.length(); i++){ 
       JSONObject jRealObj = jArray.getJSONObject(i); 
       username += jRealObj.getString("username"); 

      } 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return username; 
    } 

    @Override 
    protected void onPostExecute(String s) { 

      textView.setText(username); 

    } 
} 
} 

感謝所有!

+0

到底是什麼問題? 「無法獲得用戶名」不是很具描述性。 –

+0

程序崩潰,並不會給我結果 – Roish

+0

@Roish:如果它崩潰,那麼請張貼您的logcat錯誤跟蹤。 – Rohit5k2

回答

1

您沒有正確地讀取結果。

變化

if((line = reader.readLine()) != null){ 
     result += line; 
} 

StringBuilder sb = new StringBuilder(); 
while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
} 
result = sb.toString(); 
+0

我在「.append」上得到紅色。 我需要導入一些東西嗎? – Roish

+0

@Roish:錯過了一行。請看現在。 – Rohit5k2

+0

現在我得到了這個: org.json.JSONException:期待在字符0的字面值0] – Roish

0

剛剛知道。我再次嘗試您提供的解決方案,但沒有使用StringBuilder(),並且它的工作效果不錯。代碼如下所示:

while ((line = reader.readLine()) != null) { 
       result += line + "\n"; 
      } 

再次感謝:)