2013-05-19 23 views
24

を削除し、私のJSONコードの例である:私は私のプログラムでnavn属性を印刷した場合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"), 

私は次のような出力が得られます。

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

メートルの出力yの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

いいえ。 PHPであるため、Javaではありません。 –

答えて

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あなたのデモンストレーションのためのああたくさん!!!私は最後の3日間から解決策を探していました。 –

関連する問題