2012-11-08 132 views
1

我想這個JSON字符串轉換成一個數組:轉換JSON數組到Java數組

{"result":"success","source":"chat","tag":null,"success":{"message":"%message%","time":%time%,"player":"%player%"}} 

我想它輸出這樣的:

<%player%> %message% 

我很新java的,我從PHP來的地方,你可以只是做財產以後沿的線條:

$result = json_decode($jsonfile, true); 
echo "<".$result['success']['player']."> ".$result['success']['message']; 

Output: <%player%> %message% 

有沒有一種簡單的方法在Java中做到這一點?

我搜索了一些類似的主題,但我並沒有真正理解它們。有人能像我這樣向我解釋這個5嗎?

+1

你的Java代碼在哪裏? – 2012-11-08 09:32:17

回答

1

JSON-lib是JSON在Java中一個好的圖書館。

String jsonString = "{message:'%message%',player:'%player%'}"; 
JSONObject obj = JSONObject.fromObject(jsonString);  
System.out.println("<" + obj.get("message") + ">" + obj.get("player")); 
+0

我得到了:'import net.sf.json。*;'在頂部與其他進口然後你的代碼,我得到的錯誤'線程中的異常「main」java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException導致:java.lang.ClassNotFoundException:org.apache.commons.lang.exception.NestableRuntimeException當試圖運行它時,我做了什麼做錯了? – Jeremy

+0

您還必須導入JSON-lib的依賴關係。它也取決於Apache Commons,所以你得到這個錯誤: > Json-lib在你的類路徑中需要(至少)以下依賴項: > jakarta commons-lang 2.5 > jakarta commons-beanutils 1.8。0 > jakarta commons-collections 3.2.1 > jakarta commons-logging 1.1.1 > ezmorph 1.0.6 –

+0

謝謝你的工作很棒:) – Jeremy

3

爲什麼另起爐竈,使用GSON - 可以用來將Java對象轉換成他們的JSON表示和一個Java庫,反之亦然

0

您還可以使用XSTREAM做它已經有一個非常簡單的API 。只需Google即可。

0

您可以隨時使用下面的庫,例如:

-Jackson

-GSON

確定這裏是做不使用任何圖書館的正確方法:

例如:

JSONArray jarr = api.giveJsonArr();

// giveJsonArr()方法是一個自定義的方法,得到JSON數組。

for (int i = 0; i < jarr.length(); i++) { 

    JSONObject jobj = jarr.getJSONObject(i); // Taking each Json Object 

    String mainText = new String();   // fields to hold extracted data 
    String provText = new String(); 
    String couText = new String(); 
    String fDatu = new String(); 

    try { 
    mainText = jobj.getString("Overview"); // Getting the value of fields 
    System.out.println(mainText); 
    } catch (Exception ex) { 

    } 

    try { 

    JSONObject jProv = jobj.getJSONObject("Provider"); 
    provText = jProv.getString("Name"); 
    System.out.println(provText); 
    } catch (Exception ex) { 

    } 

    try { 
     JSONObject jCou = jobj.getJSONObject("Counterparty"); 
     couText = jCou.getString("Value"); 
     System.out.println(couText); 
    } catch (Exception ex) { 

    } 

    try { 
       String cloText = jobj.getString("ClosingDate"); 
     fDatu = giveMeDate(cloText); 
     System.out.println(fDatu); 
     } catch (Exception ex) { 

     } 

    } 
+0

看他的例子,它不是一個數組雖然... –

0

正如你所看到的,你有很多選擇。這裏是json.org的一個簡單的例子,你可以找到很多其他的選擇。他們自己提供的那個很簡單。這裏是你的例子:

String json = "{\"result\":\"success\",\"source\":\"chat\",\"tag\":null,\"success\":{\"message\":\"%message%\",\"time\":%time%,\"player\":\"%player%\"}}"; 
    JSONObject obj = new JSONObject(json); 
    JSONObject success = obj.getJSONObject("success"); 
    System.out.println("<" + success.get("player") + "> " 
         + success.get("message"));