0
DataInputStream rd = new DataInputStream(request.getInputStream());
JsonObject json = new JsonObject();

上のコードはサーバー用です。サーバーは入力ストリームを取得し、このストリームを JsonObject に割り当てたいと考えています。この「rd」を「json」に割り当てるにはどうすればよいですか?

4

2 に答える 2

1

入力ストリームを文字列に変換します

    public static String convertStreamToString(InputStream is) throws IOException {
       if (is != null) {
        Writer writer = new StringWriter();
        char[] buffer = new char[1024];
        try {
            Reader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
            int n;
            while ((n = reader.read(buffer)) != -1) {
                writer.write(buffer, 0, n);
            }
        } catch (Exception e) {
            Log.getStackTraceString(e);
        } finally {
            is.close();
        }
        return writer.toString();
    } else {
        return "";
    }
}

たとえば、pojo クラスを使用してオブジェクトにストリームします。

public class PageInfo { 
private String pageName;
private String pageContent;


public String getPageName() {
    return pageName;
}

public void setPageName(String pageName) {
    this.pageName = pageName;
}

public String getColorCode() {
    return colorCode;
}

public void setColorCode(String colorCode) {
    this.colorCode = colorCode;
}

}

文字列をオブジェクトに変換する Mapper クラス

 public Vector<PageInfo> getPageInfo(Cursor cursor) {
    Vector<PageInfo> pageInfo = new Vector<PageInfo>();
    // Column Index
    int pageContent;


    if (cursor != null) {

        if (cursor.moveToFirst()) {
            do {
                PageInfo info  = new PageInfo();

                pageContent = cursor.getColumnIndex(TablePageInfo.PAGE_CONTENT);
                colorCode = cursor.getColumnIndex(TablePageInfo.COLOR_CODE);
                bookMark = cursor.getColumnIndex(TablePageInfo.BOOK_MARK);

                info.setPageContent(cursor.getString(pageContent));


                pageInfo.add(info);

            } while (cursor.moveToNext());
        }

    }
    if (cursor != null && !cursor.isClosed()) {
        cursor.close();
    }
    return pageInfo;
}

GSON Jar を追加し、以下のコードを記述して、任意のオブジェクトを取得し、完全な JSON を返します。

package common;

import com.google.gson.Gson;

import com.google.gson.GsonBuilder;

//Generics is used so any class type can be passed
public class GsonSerializer<T> {

public T Deserialize(String json, Class classOfT) {

Gson gn = new GsonBuilder().create();

return (T) gn.fromJson(json, classOfT);

}

public String Serialize(T object) {

Gson gn = new GsonBuilder().create();

return gn.toJson(object);

}

}

詳細については、私のブログを参照してください。

http://lifeasanandroiddeveloper.blogspot.kr/2011/11/how-to-serialize-and-desearilize-json.html

于 2013-02-23T12:17:25.520 に答える
0

に変換してから に変換しStringますJSONObject

StringWriter writer = new StringWriter();
IOUtils.copy(request.getInputStream(), writer, encoding);
String theString = writer.toString();
JSONObject json = new JSONObject(theString);

詳細についてはIOUtilsこちらをご覧ください。

IOUtilsクラスを含むjarを取得するには、こちらをご覧ください

于 2013-02-23T12:17:37.820 に答える