2016-08-07 4 views
0

Я новичок с JAVA и использовать библиотеку gson преобразовать JSON строку что-то вроде этого: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

вы можете использовать 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 
    } 

} 

} 
+0

Спасибо за помощь, проблема в том, что мне нужно преобразовать все массивы в массивы строк, а имена полей json не исправлены. – crankshaft

+0

вы можете проверить с возвращенным объектом - экземпляр массива, затем преобразовать в массив String проверить эту ссылку http://stackoverflow.com/questions/2725533/how-to-see-if-an-object-is-an-array-without- с помощью отражения –

Смежные вопросы