Gson的JSON字符串:删除双引号 [英] JSON string from Gson: remove double quotes

查看:258
本文介绍了Gson的JSON字符串:删除双引号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我的Json代码示例:

  array(id=> 0,navn= Vind telefon,udgiver=>Telia,beskrivelse=> utf8_encode(Vind en iphone 5 ved atgætte1spø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 atgætte1spø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årsforbrug ),tilmeldte=> 701,startdate=>03-03-2013,enddate=>10-06-2013),
array(id=> 2,navn=>Vind 5000 kr。,udgiver=>Bilka,beskrivelse=> utf8_encode(Vind et givekort to 5000 kr til bilka ),tilmeldte=> 101,startdate=>10-05-2013,enddate=>01-07-2013),
数组(id => 3,navn=>Fri vin,udgiver=>Føtex,beskrivelse=> utf8_encode(Vind etårsforbrug af vin),tilmeldte=> 391,startdate=>01-04-2013​​,enddate=>10-07-2013​​),
数组(id=> 4,navn=> Vind et TV,udgiver=> El-giganten,beskrivelse=> utf8_encode(Vind et 60LED 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årsforbrug af vand og dansk ,开始日期=>01-03-2013​​,结束日期=>18-07-2013​​),
数组(id => 7,navn=>Fri Adwords,udgiver=>Google,beskrivelse=> utf8_encode(Vind adwords kuponner til enværdiaf 10.000),tilmeldte > 22,startdate=>10-02-2013​​,enddate=>22-08-2013​​),
数组(id=> 8,navn =Morgenmads produkter,udgiver=>Kellogs,beskrivelse=> utf8 _encode(Vind et heltårsforbrug af kellogs produkter),tilmeldte=> 111,startdate=> 01-05-2013​​,enddate=> 10-09-2013​​),
数组(id=> 9,navn=> utf8_encode(Vindtøjfor 10.000),udgiver=>Jack& Jones ,beskrivelse=> utf8_encode(Vind et givenkort til Jack& Jonespå10.000),tilmeldte=> 33,startdate=>03-05-2013,enddate= >01-10-2013​​),
);
// id,navn,udgiver,beskrivelse,tilmeldte,startdate,slutdate
echo json_encode($ lottery);
?>

打印出的java代码:

<$ ().getAsJsonObject()。get(beskrivelse)。toString();返回一个字符串。
System.out.println(discription);

我的完整Java代码

  public static void main(String [] args){
String result = null;
BufferedReader reader = null;
尝试{
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){
//忽略
}
}
}

JsonElement root = new JsonParser()。parse (结果);


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




$我的Java程序的输出: $ / strong>

  [{id:0,navn:Vind telefon,udgiver:Telia ,beskrivelse:Vind en iphone 5 ved at g\\\ætte 1 sp\\\ørgsm\\\ål,tilmeldte:89,startdate:10-04-2013,enddate: 30-06-2013},{id:1,navn:星期五taletid,udgiver:Telmore,beskrivelse:Vind et \\\\\\\\\\\\\\\\\\\\\\\\\\\' ,tilmeldte:701,startdate:03-03-2013​​,enddate:10-06-2013​​},{id:2,navn:Vind 5000 kr。, udgiver:Bilka,beskrivelse:Vind et givekort p\\\å 5000 kr til bilka。,tilmeldte:101,startdate:10-05-2013​​,enddate: 01-07-2013},{id:3,navn:Fri vin,udgiver:null,beskrivelse:Vind et \\\års forbrug af vin,tilmeldte:391 ,startdate:01-04-2013​​,enddate:10-07-2013​​},{id:4,navn:Vind et TV,udgiver giganten,beskrivelse:Vind et 60LED电视直到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 \\\års 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\\\ærdi af 10.000, tilmeldte:22,startdate:10-02-2013​​,enddate:22-08-2013​​},{id:8,navn:Morgenmads produkter,udgiver :Kellogs,beskrivelse:Vind et helt \\\års forbrug af kellogs produkter,tilmeldte:111,startdate:01-05-2013​​,enddate:10-09-2013 },{id:9,navn:Vind t\\\øj for 10.000,udgiver:Jack& Jones,beskrivelse:Vind et givekort til Jack& Jones p\\\å 10.000,tilmeldte:33,startdate:03-05-2013,enddate:01-10-2013}] 
Vind en Iphone 5 ved at
Vind etårsforbrug af and og fri taletid
Vind et givekortpå5000 kr til bilka。
Vind etårsforbrug af vin
Vind et 60LED电视直播stuen
Vind en Galaxy S4 4g电话
Vind et helt与其他人分享
Vind adwords kuponner til enværdiaf 10.000
Vind et heltårsforbrug af kellogs produkter
Vind et givekort til Jack& Jonespå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());


$ / code>

其输出:

  {hello:world} 
world
world


Here is an example of my Json code:

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

If I print out the navn attribute in my program i get the following output:

"Vind Telefon"

As you can see it keeps the double quotes.

Is there any way I can avoid that?

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

The java code printing it out:

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

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

The output of my Java program:

    [{"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"

解决方案

It's not documented properly, but JsonElement#toString() gets you a string that represents the JSON element and would be appropriate for re-creating the JSON serialization. What you want is JsonElement#getAsString(). This will throw an error if you're not looking at a string, but if you are, you'll get the string value.

Here's a test program to demonstrate:

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

And its output:

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

这篇关于Gson的JSON字符串:删除双引号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆