我需要将JSON字符串转换为Object []。
编码我如何获取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示例:
在我必须以这种方式填充ChomboBox之后(这是示例):
Object[] lists = getLists();
for(Object list : lists){
System.out.println("fill combobox");
}
答案 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.jar
,jackson-core-x.y.z.jar
和jackson-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() );
}
}
}