Chaîne JSON à partir de Gson: supprimer les guillemets
Voici un exemple de mon code 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"),
Si j'ai imprimer le navn
attribut dans mon programme, j'obtiens le résultat suivant:
"Vind Telefon"
Comme vous pouvez le voir, il conserve les doubles guillemets.
Est il possible que je peux l'éviter?
Mon code complet:
<?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);
?>
Le code java d'imprimer les documents:
String discription = arrayListing.get(i).getAsJsonObject().get("beskrivelse").toString();
System.out.println(discription);
Mon code 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);
}
}
La sortie de mon programme 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"
- Ce n'est pas du JSON.
- Et ce n'est pas Java.
- Nope. Ce n'est pas Java, car il est en PHP.
- pourriez-vous fournir un exemple de code que vous utilisez pour faire la sortie?
- JSON n'est pas un sous-ensemble de JavaScript, c'est une notation qui est basé sur un sous-ensemble de JavaScript (objet de la syntaxe, par exemple)
- pouvez-vous nous montrer le code d'imprimer les documents?
- Mis à jour mon code pour correspondre à la demande
- Comment
arrayListing
reçoit sa valeur? - im en utilisant GSON
- Ajouté mon code java
- comment à propos de la sortie complète de votre code Java? Vous avez quelques lignes qui sont à l'impression de tous les commentaires; montrer ce qu'ils impriment.
- ajouté ma sortie
- Quelqu'un capable de me dire comment je peux me débarrasser de la double qoutation marques?
Vous devez vous connecter pour publier un commentaire.
Il n'est pas suffisamment documentée, mais
JsonElement#toString()
vous obtient une chaîne de caractères qui représente le JSON élément et serait approprié pour une re-création de la sérialisation JSON. Ce que vous voulez estJsonElement#getAsString()
. Cela provoquera une erreur si vous n'êtes pas à la recherche à une chaîne, mais si vous l'êtes, vous aurez la chaîne de valeur.Voici un programme de test pour démontrer:
Et sa sortie:
discription.substring(1, discription.length()-1)
avant de les convertir en JSON en XML juste pour la sortie.JsonObject
et dominantetoString()
- à-direreturn this.getAsString()
être susceptibles de casser des choses? Ou en d'autres termes, ne Gson s'appuient sur ce vilain comportement detoString()
en interne ou est-ce juste une drôle de conception de décision affectant une partie publique de l'API que les utilisateurs sont libres de subvertir à volonté?À mettre l'objet ou les propriétés de la matrice dans votre JsonObject et les faire revenir comme des objets et des tableaux (pas comme une chaîne de caractères), l'utilisation de l'approche: