我是JAVA的初学者,正在使用gson库转换类似这样的JSON字符串:
String json = "{\"Report Title\": \"Simple Embedded Report Example with Parameters\",\"Col Headers BG Color\": \"yellow\",\"Customer Names\":[\"American Souvenirs Inc\",\"Toys4GrownUps.com\",\"giftsbymail.co.uk\",\"BG&E Collectables\",\"Classic Gift Ideas, Inc\"]}";
Gson gson = new Gson();
jsonObject (Map) = gson.fromJson(json, Object.class);
但问题是我需要"客户名称"要作为字符串数组而不是对象数组返回的数组。
gson可以这样做,还是必须先通过某种方式检测类型(数组)然后循环遍历每个元素将其转换为字符串数组并替换对象数组?
添加的问题是JSON字段名称不固定,JSON字符串中可能包含多个数组,并且所有数组都需要转换。
答案 0 :(得分:0)
您可以使用jsonarray获取特定字段
你可以找到json api JSON
将json文本添加到文件中,或者您可以使用缓冲区传递给参数
String json = "{\"customer_names\" : [...]}";
然后
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("test.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray msg = (JSONArray) jsonObject.get("Customer Names");
Iterator<String> iterator = msg.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
或者您可以使用类似这样的GSON
public class JsonPojo {
private String[] customer_names;
public String[] getCustomerNames(){ return this.customer_names;}
}
public class App{
public static main(String[] args) {
Gson gson = new Gson();
JsonPojo thing = gson.fromJson(json, JsonPojo.class);
if (thing.getCustomerNames()!= null)
{
// do what you want
}
}
}