2013-05-19 135 views
24

這裏是我的Json代碼的例子:JSON字符串:去掉雙引號

array("id" => 0, "navn" => "Vind telefon", "udgiver" => "Telia", "beskrivelse" => utf8_encode("Vind en Iphone 5 ved at gætte 1 spørgsmål"), "tilmeldte" => 89, "startdate" => "10-04-2013", "enddate" => "30-06-2013"), 

如果我打印出我在程序的navn屬性我得到下面的輸出:

"Vind Telefon" 

正如你可以看到它保留雙引號。

有什麼辦法可以避免嗎?

我的全碼:

<?php 
header('Content-Type: json; charset=utf-8'); 
$lottery = array(
    array("id" => 0, "navn" => "Vind telefon", "udgiver" => "Telia", "beskrivelse" => utf8_encode("Vind en Iphone 5 ved at gætte 1 spørgsmål"), "tilmeldte" => 89, "startdate" => "10-04-2013", "enddate" => "30-06-2013"), 
    array("id" => 1, "navn" => "Fri taletid", "udgiver" => "Telmore", "beskrivelse" => utf8_encode("Vind et års forbrug af fri data og fri taletid"), "tilmeldte" => 701, "startdate" => "03-03-2013", "enddate" => "10-06-2013"), 
    array("id" => 2, "navn" => "Vind 5000 kr.", "udgiver" => "Bilka", "beskrivelse" => utf8_encode("Vind et gavekort på 5000 kr til bilka."), "tilmeldte" => 101, "startdate" => "10-05-2013", "enddate" => "01-07-2013"), 
    array("id" => 3, "navn" => "Fri vin", "udgiver" => "Føtex", "beskrivelse" => utf8_encode("Vind et års forbrug af vin"), "tilmeldte" => 391, "startdate" => "01-04-2013", "enddate" => "10-07-2013"), 
    array("id" => 4, "navn" => "Vind et TV", "udgiver" => "El-giganten", "beskrivelse" => utf8_encode("Vind et 60\" LED tv til stuen"), "tilmeldte" => 22, "startdate" => "01-04-2013", "enddate" => "22-07-2013"), 
    array("id" => 5, "navn" => "Vind en telefon", "udgiver" => "Samsung", "beskrivelse" => utf8_encode("Vind en Galaxy S4 4g telefon"), "tilmeldte" => 784, "startdate" => "10-04-2013", "enddate" => "30-07-2013"), 
    array("id" => 6, "navn" => "Gratis Vand", "udgiver" => "Aqua D'or", "beskrivelse" => utf8_encode("Vind et helt års forbrug af vand og dansk vand"), "tilmeldte" => 345, "startdate" => "01-03-2013", "enddate" => "18-07-2013"), 
    array("id" => 7, "navn" => "Fri Adwords", "udgiver" => "Google", "beskrivelse" => utf8_encode("Vind adwords kuponner til en værdi af 10.000"), "tilmeldte" => 22, "startdate" => "10-02-2013", "enddate" => "22-08-2013"), 
    array("id" => 8, "navn" => "Morgenmads produkter", "udgiver" => "Kellogs", "beskrivelse" => utf8_encode("Vind et helt års forbrug af kellogs produkter"), "tilmeldte" => 111, "startdate" => "01-05-2013", "enddate" => "10-09-2013"), 
    array("id" => 9, "navn" => utf8_encode("Vind tøj for 10.000"), "udgiver" => "Jack & Jones", "beskrivelse" => utf8_encode("Vind et gavekort til Jack & Jones på 10.000"), "tilmeldte" => 33, "startdate" => "03-05-2013", "enddate" => "01-10-2013"), 
); 
//id, navn, udgiver, beskrivelse, tilmeldte, startdate, slutdate 
echo json_encode($lottery); 
?> 

Java代碼打印出來:

 String discription = arrayListing.get(i).getAsJsonObject().get("beskrivelse").toString(); 
    System.out.println(discription); 

我的全Java代碼

public static void main(String[] args) { 
    String result = null; 
    BufferedReader reader = null; 
    try { 
     URL url = new URL("http://www.marcrasmussen.dk/json.php"); 
     reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8")); 
     for (String line; (line = reader.readLine()) != null;) { 
      System.out.println(line); 
      result = line; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     if (reader != null) { 
      try { 
       reader.close(); 
      } catch (IOException e) { 
       // Ignore 
      } 
     } 
    } 

    JsonElement root = new JsonParser().parse(result); 


    HashMap<Integer,CompetetionObject> comMap = new HashMap<>(); 

    JsonArray arrayListing = root.getAsJsonArray(); 
    for (int i = 0; i < root.getAsJsonArray().size(); i++) { 
     int id = Integer.parseInt(arrayListing.get(i).getAsJsonObject().get("id").toString()); 
     String name = arrayListing.get(i).getAsJsonObject().get("navn").toString(); 
     String provider = arrayListing.get(i).getAsJsonObject().get("udgiver").toString(); 
     String discription = arrayListing.get(i).getAsJsonObject().get("beskrivelse").toString(); 
     int signedUp = Integer.parseInt(arrayListing.get(i).getAsJsonObject().get("tilmeldte").toString()); 
     String startDate = arrayListing.get(i).getAsJsonObject().get("startdate").toString(); 
     String endDate = arrayListing.get(i).getAsJsonObject().get("enddate").toString(); 
     CompetetionObject co = new CompetetionObject(id, name, provider, discription, signedUp, startDate, endDate); 
     String day = startDate.substring(1, 3); 
     String month = startDate.substring(5,6); 
     String year = startDate.substring(7,startDate.length()-1); 
     DateTime d = new DateTime(year+"-"+month+"-"+day); 
     System.out.println(discription); 
     comMap.put(id, co); 
    } 
} 

m的輸出ŸJava程序:

[{"id":0,"navn":"Vind telefon","udgiver":"Telia","beskrivelse":"Vind en Iphone 5 ved at g\u00e6tte 1 sp\u00f8rgsm\u00e5l","tilmeldte":89,"startdate":"10-04-2013","enddate":"30-06-2013"},{"id":1,"navn":"Fri taletid","udgiver":"Telmore","beskrivelse":"Vind et \u00e5rs forbrug af fri data og fri taletid","tilmeldte":701,"startdate":"03-03-2013","enddate":"10-06-2013"},{"id":2,"navn":"Vind 5000 kr.","udgiver":"Bilka","beskrivelse":"Vind et gavekort p\u00e5 5000 kr til bilka.","tilmeldte":101,"startdate":"10-05-2013","enddate":"01-07-2013"},{"id":3,"navn":"Fri vin","udgiver":null,"beskrivelse":"Vind et \u00e5rs forbrug af vin","tilmeldte":391,"startdate":"01-04-2013","enddate":"10-07-2013"},{"id":4,"navn":"Vind et TV","udgiver":"El-giganten","beskrivelse":"Vind et 60\" LED tv til stuen","tilmeldte":22,"startdate":"01-04-2013","enddate":"22-07-2013"},{"id":5,"navn":"Vind en telefon","udgiver":"Samsung","beskrivelse":"Vind en Galaxy S4 4g telefon","tilmeldte":784,"startdate":"10-04-2013","enddate":"30-07-2013"},{"id":6,"navn":"Gratis Vand","udgiver":"Aqua D'or","beskrivelse":"Vind et helt \u00e5rs forbrug af vand og dansk vand","tilmeldte":345,"startdate":"01-03-2013","enddate":"18-07-2013"},{"id":7,"navn":"Fri Adwords","udgiver":"Google","beskrivelse":"Vind adwords kuponner til en v\u00e6rdi af 10.000","tilmeldte":22,"startdate":"10-02-2013","enddate":"22-08-2013"},{"id":8,"navn":"Morgenmads produkter","udgiver":"Kellogs","beskrivelse":"Vind et helt \u00e5rs forbrug af kellogs produkter","tilmeldte":111,"startdate":"01-05-2013","enddate":"10-09-2013"},{"id":9,"navn":"Vind t\u00f8j for 10.000","udgiver":"Jack & Jones","beskrivelse":"Vind et gavekort til Jack & Jones p\u00e5 10.000","tilmeldte":33,"startdate":"03-05-2013","enddate":"01-10-2013"}] 
"Vind en Iphone 5 ved at gætte 1 spørgsmål" 
"Vind et års forbrug af fri data og fri taletid" 
"Vind et gavekort på 5000 kr til bilka." 
"Vind et års forbrug af vin" 
"Vind et 60\" LED tv til stuen" 
"Vind en Galaxy S4 4g telefon" 
"Vind et helt års forbrug af vand og dansk vand" 
"Vind adwords kuponner til en værdi af 10.000" 
"Vind et helt års forbrug af kellogs produkter" 
"Vind et gavekort til Jack & Jones på 10.000" 
+6

這不是JSON。 –

+2

它不是Java。 –

+1

沒有。這不是Java,因爲它是PHP。 –

回答

56

這不是正確的記載,但JsonElement#toString()讓你表示JSON元素,將適用於重新創建序列化JSON字符串。你想要的是JsonElement#getAsString()。如果你不看一個字符串,這會拋出一個錯誤,但如果你是,你會得到字符串值。

這是一個測試程序來演示:

import com.google.gson.JsonElement; 
import com.google.gson.JsonParser; 
public class Test { 
    public static void main(String[] args) { 
     String in = "{\"hello\":\"world\"}"; 
     System.out.println(in); 
     JsonElement root = new JsonParser().parse(in); 
     System.out.println(root.getAsJsonObject().get("hello").toString()); 
     System.out.println(root.getAsJsonObject().get("hello").getAsString()); 
    } 
} 

,其輸出:

{"hello":"world"} 
"world" 
world 
+0

我們的答案都是相關的。你的回答比我的簡單。 – Cyril

+0

:-) JAXB很酷,但我認爲在爲輸出轉換JSON爲XML之前,我會執行'discription.substring(1,discription.length() - 1)'。 –

+0

@NathanielWaisbrot噢thanx很多爲您的演示!我正在尋找最近三天的解決方案。 –