JSON字符串转换为Object []

时间:2018-08-24 08:40:21

标签: java json

我需要将JSON字符串转换为Object []。

我尝试使用link1link2并没有帮助我。

编码我如何获取JSON字符串:

public static String getListJsonString() {
    String getListsUrl = BASE_URL + "lists";
    String result = "";
    try {
        URL url = new URL(getListsUrl);
        URLConnection urlConnection = url.openConnection();
        urlConnection.setRequestProperty("Authorization", "Basic " + getAuthStringEnc());
        InputStream is = urlConnection.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);

        int numCharsRead;
        char[] charArray = new char[1024];
        StringBuffer sb = new StringBuffer();
        while ((numCharsRead = isr.read(charArray)) > 0) {
            sb.append(charArray, 0, numCharsRead);
        }
        result = sb.toString();
        System.out.println(result);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return result;
}

这是我的JSON示例:

enter image description here

在我必须以这种方式填充ChomboBox之后(这是示例):

Object[] lists = getLists();
for(Object list : lists){
    System.out.println("fill combobox");
}

3 个答案:

答案 0 :(得分:2)

您可以使用Gson,TypeToken和JSONObject,例如:

final static Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
final Type objectType = new TypeToken<Object>(){}.getType();

JSONObject obj = new JSONObject(result);

Vector<Object> lists = gson.fromJson(obj.toString(), objectType); 

答案 1 :(得分:1)

我建议您应该使用jackson lib。我链接了一个很棒的快速教程,我发现它非常清楚和有用。

jackson lib背后的想法是JSON格式是一种字符串化的Object格式,因此您应该能够轻松地将其正确映射到Java POJO。 (POJO =普通的旧Java对象,它是一个包含一些字段的对象,也许在您的字段顶部有一些注释,最后只是吸气剂和塞特剂)。

您可以使用以下链接从json字符串自动生成Jackson注释的POJO类:http://www.jsonschema2pojo.org/(只需选择“ JSON”而不是“ JSON SCHEMA”,并根据需要调整其他参数即可。)< / p>

答案 2 :(得分:0)

有时候您很难感觉到我的痛苦,

这是一个非常简单的示例,您如何使用Jackson库读取json文档。在类路径中至少需要jackson-annotations-x.y.z.jarjackson-core-x.y.z.jarjackson-databind-x.y.z.jar个文件。

https://github.com/FasterXML/jackson-databind/

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;

public class TestJSON1 {

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode jsonObj;

        String jsonStr = "{ \"list\": [ "
            + " {\"id\":\"1\", \"name\":\"test1\"}, "
            + " {\"id\":\"2\", \"name\":\"test2\"}, "
            + " {\"id\":\"3\", \"name\":\"test3\"} "
            + "]}";

        jsonObj = mapper.readTree(jsonStr);
        System.out.println(jsonObj.get("list"));

        JsonNode jsonArr=jsonObj.get("list");
        int count=jsonArr.size();
        for (int idx=0; idx<count; idx++) {
            jsonObj = jsonArr.get(idx);
            System.out.println( jsonObj.get("id").asText()+"="+jsonObj.get("name").asText() );
        }
    }

}