0

ウェブサイトからJSONファイルを取得して解析しようとしています。残念ながら、これまでのところ運がありません。BaslikContainerという別のクラスを使用してデータをフェッチできましたが、このコードを別のクラス内で機能させる必要があります。これには、配列リスト内のBaslikインスタンスが必要なため、削除する必要があり、現在は機能しません。

誰かがこれの問題を指摘できますか?例外はスローされません-なぜこれが起こっているのかわかりません。

package info.funstein.TestHttpGet;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class TestHttpGet {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception{
        BufferedReader in = null;
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet();
        request.setURI(new URI("http://dev.funstein.info/baslik.json"));
        HttpResponse response = client.execute(request);
        in = new BufferedReader
                (new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {
            sb.append(line + NL);
        }
        in.close();
        String page = sb.toString();


        GsonBuilder gsonBuilder = new GsonBuilder();
        Gson gson = gsonBuilder.create();
        Basliklar basliklar = gson.fromJson(page, Basliklar.class);
        System.out.println(basliklar); 

        }
    }
class Basliklar {
    private List<Baslik> basliklar;

    @Override
    public String toString() {
        return String.format("[Basliklar: %1$s]", basliklar);
    }
}

class Baslik {
    private String baslikAdi;
    private String baslikAcan;
    private int baslikID;

    public String getBaslikAdi() {
        return baslikAdi;
    }

    public void setBaslikAdi(String baslikAdi) {
        this.baslikAdi = baslikAdi;
    }

    public String getBaslikAcan() {
        return baslikAcan;
    }

    public void setBaslikAcan(String baslikAcan) {
        this.baslikAcan = baslikAcan;
    }

    public int getBaslikID() {
        return baslikID;
    }

    public void setBaslikID(int baslikID) {
        this.baslikID = baslikID;
    }

    @Override
    public String toString() {
        return String.format("[Baslik: baslikAdi=%1$s, baslikAcan=%2$s, baslikID=%3$d]",
                baslikAdi, baslikAcan, baslikID);
    }
}
4

1 に答える 1

1

入力JSon文字列が間違っています。

Gson.toJson(Object)次の方法を使用する

GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
Basliklar b = new Basliklar();
b.basliklar = new ArrayList<Baslik>();
Baslik b1 = new Baslik();
b1.setBaslikAdi("Deneme1");
b1.setBaslikAcan("funstein");
b1.setBaslikID(0);
b.basliklar.add(b1);
Baslik b2 = new Baslik();
b2.setBaslikAdi("Deneme2");
b2.setBaslikAcan("qeremqazan");
b2.setBaslikID(1);
b.basliklar.add(b2);

LoggerFactory.getLogger(TestHttpGet.class).debug(gson.toJson(b));

次のJson文字列を生成します。

{"basliklar":[{"baslikAdi":"Deneme1","baslikAcan":"funstein","baslikID":0},{"baslikAdi":"Deneme2","baslikAcan":"qeremqazan","baslikID":1}]}

JSON入力文字列は次のとおりです。

{"basliklar":[{"baslik":{"baslikAdi":"Deneme1","baslikAcan":"funstein","baslikID":"0"}},{"baslik":{"baslikAdi":"Deneme2","baslikAcan":"qeremqazan","baslikID":"1"}}]}

入力文字列に追加の/予期しない「baslik:」要素があります。

于 2012-04-14T18:50:09.730 に答える