2016-04-23 251 views
0

我有以下的JSON數組像這樣的字符串,如何從此JSON中提取數據?

String output = "[{\"Symbol\":\"AMZN\",\"Name\":\"Amazon.com Inc\",\"Exchange\":\"NASDAQ\"},{\"Symbol\":\"VXAZN\",\"Name\":\"CBOE Amazon VIX Index\",\"Exchange\":\"Market Data Express\"}]"; 

我想分析它,使一個字符串數組這樣,

array = {"AMZN Amazon.com Inc NASDAQ", "VXAZN CBOE Amazon VIX Index Market Data Express"}; 

我想出了下面的代碼解析串入使用json-simple-1.1.1.jar庫JSON數組,

import org.json.simple.*; 
import org.json.simple.parser.JSONParser; 
import org.json.simple.parser.ParseException; 


public class RESTclient { 

    public static void main(String[] args) { 

      String output = "[{\"Symbol\":\"AMZN\",\"Name\":\"Amazon.com Inc\",\"Exchange\":\"NASDAQ\"},{\"Symbol\":\"VXAZN\",\"Name\":\"CBOE Amazon VIX Index\",\"Exchange\":\"Market Data Express\"}]"; 

      JSONParser parser = new JSONParser(); 

      JSONArray jsonArray = null; 

      try { 
       jsonArray = (JSONArray) parser.parse(output); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

      System.out.println(jsonArray); 
     } 
} 

這給了我下面的OUTPUT

[{"Name":"Amazon.com Inc","Exchange":"NASDAQ","Symbol":"AMZN"},{"Name":"CBOE Amazon VIX Index","Exchange":"Market Data Express","Symbol":"VXAZN"}] 

現在在此之後,是有一種優雅的方式來實現我想要的輸出?

回答

1

你必須寫額外的代碼。

ArrayList<String> stringArray = new ArrayList<String>(); 
for (Iterator iterator = jsonArray.iterator(); iterator.hasNext();) { 
    JSONObject map = (JSONObject)iterator.next(); 
    stringArray.add(map.get("Symbol")+" "+map.get("Name")+" "+map.get("Exchange")); 
} 
//stringArray is want you want 
0

可以與傑克遜不喜歡它,

private ObjectMapper mapper = new ObjectMapper(); 
    String[] outputArray = mapper.readValue(jsonString, String[].class);