将Json的String转换为JsonObject

时间:2013-08-28 02:19:59

标签: java json gson

我从Web服务http get请求收到了一个Json字符串。我想将我形成的字符串转换为JsonObject。

这个问题得到了很好的回答。请参阅下面的答案。

import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
import java.util.List;
import java.io.*;
import java.util.*;

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

public class RetrieveData {

    public static String httpGet(String urlStr) throws IOException {
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        if (conn.getResponseCode() != 200) {
            throw new IOException(conn.getResponseMessage());
        }

        // Buffer the result into a string
        BufferedReader rd = new BufferedReader(new InputStreamReader(
                conn.getInputStream()));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = rd.readLine()) != null) {
            sb.append(line);
        }
        rd.close();

        conn.disconnect();
        return sb.toString();
    }

    public static void main(String[] args) {
        try {
            String jsonString = (httpGet("http://kinseyreporter.org/API/list/reports/?tag=male%20victim&from=2012-06-02"));
            JsonObject obj = new JsonObject();

            Gson gson = new Gson();
            System.out.println(jsonString);
            List<String> list = new ArrayList<String>();
            gson.fromJson(jsonString, (Type) list);
            String json = gson.toJson(jsonString);
            System.out.println(json);
        } catch (Exception E) {
        }
    }
}

1 个答案:

答案 0 :(得分:1)

为此,你需要解析你的flux json,这里是代码。

 JsonObject root = (JsonObject)new JsonParser().parse(jsonString);  

int i=0;
JsonObject dataReports

//get and print each object of reports
while(root.getAsJsonObject().get("reports").getAsJsonArray().size()>i && (dataReports=root.getAsJsonObject().get("reports").getAsJsonArray().get(i).getAsJsonObject())!=null){  

    System.out.println(dataReports.toString());
    i++;
}