2

私はAndroidが初めてです。Android での JSON 解析について少し知っています。profile_image_urlとを含む「user」というタグを解析したい Twitter フィードを解析していますscreen_name

JSON フィードはこちらです。これが私のコードです:

JSONParser jParser = new JSONParser();

// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);

try {
    // Getting Array of Contacts

    contacts = json.getJSONArray(USER);

    // looping through All Contacts
    for(int i = 0; i < contacts.length(); i++){
        JSONObject c = contacts.getJSONObject(i);
    }
4

5 に答える 5

3

Android でJSONObjectを使用できます。

    JSONParser jParser = new JSONParser();

    // getting JSON string from URL
    String jsonString = jParser.getJSONFromUrl(url).tostring();

    JSONArray json= new JSONArray(jsonString);



    try {

        // looping through All Contacts
            for(int i = 0; i < json.length(); i++){
              JSONObject contacts = json.getJSONObject(i);

                JSONObject user = contacts.getJSONObject("user");

                String imageUrl = user.getString("profile_image_url");
                String screenName = user.getString("Screen_name");

            }
        }catch(Exception e)
   {
   }
于 2012-08-28T18:11:18.060 に答える
1

を使用しGsonます。ユーザーガイドを確認してください。

モデル例:

Class User
{
   public String profile_image_url;
   public String screen_name;
}

パーサーの例:

Gson gson = new Gson();
User user = gson.fromJson("['profile_image_url':'the_url', 'screen_name':'the_name']", User.class);

PS: profile_image_urljson の名前がクラスのメンバー名とまったく同じであることを確認してください。

于 2012-08-28T18:48:10.027 に答える
1

json.orgAndroid に含まれている JSON ファイルを簡単に操作できるライブラリを使用できます。

それでも、Gson from Google, or Jacksonこれを行うために使用できます....

非常に役立つこのサイトを参照してください。

http://www.vogella.com/articles/AndroidJSON/article.html

この上記のサイトでは、twitter Json の解析についても説明しています。

例えば:

    JSONObject jsonObject = jsonArray.getJSONObject(i);
    jsonObject.getString("name");
于 2012-08-28T18:11:36.203 に答える
0

androidで提供されるバニラJSONパーサーはデータを解析できますが、残念ながら、メモリ内に完全なJSONモデルを構築します(XMLのDOMパーサーのように)-これは少量のデータでは正常に機能しますが、大量のデータを割り当てて占有するため、わずかに大きいデータでは実用的ではありませんメモリー。

GSONまたはjacksonのようないくつかのプルパーサーはあなたのタスクにより適しています(jacksonはより速いと主張していますが、より重いjarとより多くの依存関係-私はGSONを好みます)

単純なデータバインディングライブラリを検討することもできます。

https://github.com/ko5tik/jsonserializer

(Maven Centralから入手可能なjarファイル)

これにより、JSONの解析は次のようになります。

https://github.com/ko5tik/accmeter/blob/master/src/main/java/de/pribluda/android/accmeter/file/SampleReader.java

(フィールドに入力するjava.io.Readerとクラスを提供するだけです)

于 2012-08-28T18:44:26.870 に答える
0

これはYoutubeからチャンネルリストを取得するための私のコードです。これが役立つことを願っています

public void getYouTubeData(){
    StringBuilder urlString = new StringBuilder();
    HttpURLConnection urlConnection = null;
    URL url = null;
    urlString.append("http://gdata.youtube.com/feeds/api/users/CaliforniaDMV/playlists?v=2&alt=json");
    m_ytdata = new ArrayList<YoutubeChannelList.YouTubePlayListData>();

    try {
        url = new URL(urlString.toString());
    } catch (MalformedURLException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    try {
        urlConnection = (HttpURLConnection) url.openConnection();
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    try {
        urlConnection.setRequestMethod("GET");
    } catch (ProtocolException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    urlConnection.setDoOutput(true);
    urlConnection.setDoInput(true);
    try {
        urlConnection.connect();
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e){
        e.printStackTrace();
    }
    InputStream inputStream = null;
    try {
        inputStream = urlConnection.getInputStream();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String result = null;
    if(inputStream != null){
     result = convertStreamToString(inputStream);
    } else {
        Log.d("NULLLL","NULL");
    }
    try {
        inputStream.close();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    urlConnection.disconnect();
    try {
        final JSONObject json = new JSONObject(result);
        final JSONObject jsonentry = json.getJSONObject("feed");
        int length = jsonentry.length();
        //final JSONObject jsonarr = jsonentry.getJSONObject("entry")
        final JSONArray jsonarr = jsonentry.getJSONArray("entry");
        int len = jsonarr.length();

        //Log.d("XXX", "Length is " + length + "arry len: " + len);

        for(int loop = 0;loop<len;loop++){
            YouTubePlayListData yt = new YouTubePlayListData();
            final JSONObject inner = jsonarr.getJSONObject(loop);
            yt.setIds(inner.getJSONObject("yt$playlistId").getString("$t"));
            //yt.setVideoId(getThumbnailImage(inner.getJSONObject("yt$playlistId").getString("$t")));
            yt.setUpdated(inner.getJSONObject("updated").getString("$t").substring(0,10));
            yt.setTitles(inner.getJSONObject("title").getString("$t"));
            yt.setCount(Integer.parseInt(inner.getJSONObject("yt$countHint").getString("$t")));
            //Log.d("LOOP","id: " +inner.getJSONObject("yt$playlistId").getString("$t"));
            //Log.d("LOOP","updated: " + inner.getJSONObject("updated").toString());
            //Log.d("LOOP","title: " + inner.getJSONObject("title").getString("$t"));
            m_ytdata.add(yt);
        }
        runOnUiThread(returnRes);

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
于 2012-08-28T18:12:39.530 に答える