programing

Gson에서 JSON 문자열: 큰따옴표 제거

closeapi 2023. 3. 7. 21:28
반응형

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"

보시는 것처럼 큰따옴표가 붙어 있습니다.

제가 그걸 피할 수 있는 방법이 없을까요?

전체 코드:

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

전체 자바 코드

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

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

위의 명령어는 문자열 전체에서 큰따옴표를 삭제하는 데 도움이 됩니다.이것은 GSON 라이브러리를 사용하고 있습니다.

언급URL : https://stackoverflow.com/questions/16639482/json-string-from-gson-remove-double-quotes

반응형