it-swarm.com.de

JSON-String von Gson: doppelte Anführungszeichen entfernen

Hier ist ein Beispiel meines Json-Codes:

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"),

Wenn ich das navn-Attribut in meinem Programm ausdrucken möchte, erhalte ich folgende Ausgabe:

"Vind Telefon"

Wie Sie sehen, werden doppelte Anführungszeichen verwendet.

Gibt es eine Möglichkeit, wie ich das vermeiden kann?

Mein vollständiger Code:

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

Der Java-Code zum Ausdrucken:

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

Mein vollständiger Java-Code

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

Die Ausgabe meines Java-Programms:

    [{"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"
27
Marc Rasmussen

Es ist nicht ordnungsgemäß dokumentiert, aber JsonElement#toString() liefert Ihnen eine Zeichenfolge, die das JSON-Element darstellt, und wäre für die Neuerstellung der JSON-Serialisierung geeignet. Was Sie wollen, ist JsonElement#getAsString(). Dies führt zu einer Fehlermeldung, wenn Sie keine Zeichenfolge betrachten, aber wenn Sie es tun, wird der Zeichenfolgenwert angezeigt.

Hier ist ein Testprogramm zum Demonstrieren:

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

Und seine Ausgabe:

{"hello":"world"}
"world"
world
65

Um Objekt- oder Array-Eigenschaften in Ihr JsonObject zu übernehmen und als Objekte und Arrays (nicht als Zeichenfolge) zurückzugeben, verwenden Sie den Ansatz:

new JsonObject().add(
  "mySubobject",
  new Gson().toJsonTree(
    new JsonObject()));
0
Zon
public class StringTypeSerializationAdapter extends TypeAdapter<String> {


public String read(JsonReader reader) {
    throw new UnsupportedOperationException();
}

public void write(JsonWriter writer, String value) throws IOException {
    if (value == null) {
        writer.nullValue();
        return;
    }
    writer.jsonValue(value);
}
}

oben wird Ihnen helfen, doppelte Anführungszeichen zwischen Zeichenfolgen zu entfernen. Dies verwendet die GSON-Bibliothek

0
Bhukailas