来自Gson的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" 

如你所见,它保留了双引号。

有什么办法可以避免吗?

我的完整代码:

  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 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); } } 

我的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" 

它没有正确记录,但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 

要将对象或数组属性放入JsonObject并将它们作为对象和数组(而不是字符串)返回,请使用以下方法:

 new JsonObject().add( "mySubobject", new Gson().toJsonTree( new JsonObject()));