1

logcat でnull pointer exception、このコード サンプルを取得しています。oneObject.has(TAG_TITLE)たとえば、内部にegを追加しようとしてArraylistいますが、たとえば印刷currentPost.getid()すると、 this が表示されnullpointer excepttionます。誰か助けてください。

// URL から JSON 文字列を取得

JSONArray jArray = jParser.getJSONFromUrl(url);
ArrayList<Post> PostList = new ArrayList<Post>();
Post currentPost = new Post();

// looping through All element
for(int i = 0; i < jArray.length(); i++){
    try{
        JSONObject  oneObject = jArray.getJSONObject(i);
        // Storing each json item in variable
        if(oneObject.has(TAG_ID)){
            id = oneObject.getString(TAG_ID);
            currentPost.setId(id);
        }
        else{
            id="";
        }
        if(oneObject.has(TAG_TITLE)){
            title = oneObject.getString(TAG_TITLE);
            currentPost.setTitle(title);
        }
        else{
            title ="";
        }
        if(oneObject.has(TAG_CONTENT)){
            content = oneObject.getString(TAG_CONTENT);
            currentPost.setContent(content);
        }
        else{
            content ="";
        }
        System.out.println("postlist: "+currentPost.getId());
        PostList.add(currentPost);
        currentPost = new Post();   
4

2 に答える 2

1

キー名がJson文字列に存在しない場合は、currentPostオブジェクトのフィールド値をデフォルト値に設定する必要もあります。

           // your code here...
            if(oneObject.has(TAG_ID)){

                id = oneObject.getString(TAG_ID);

                currentPost.setId(id);
            }
            else{

                id="DEFAULT_VALUE";
                currentPost.setId(id);  //<<<< set default value here
            }
           // your code here... 
于 2013-01-24T08:05:43.753 に答える
0

あなたのコードで

// Storing each json item in variable

                    if(oneObject.has(TAG_ID)){

                        id = oneObject.getString(TAG_ID);

                        currentPost.setId(id);
                    }
                    else{

                        id="";
                    }

oneObject.has(TAG_ID)現在の戻り値 falseの Id を設定し忘れました。

これを回避する最善の方法は、パラメーターが設定されていない場合、すべてのゲッターから空の文字列を返すことです。

編集:

太字の変更を加えます。

// 各 json アイテムを変数に格納

                    if(oneObject.has(TAG_ID)){

                        id = oneObject.getString(TAG_ID);

                        currentPost.setId(id);
                    }
                    else{

                        id=""; 
                        **currentPost.setId(id);**
                    }
于 2013-01-24T08:00:36.063 に答える