gpt4 book ai didi

java - Gson.fromJson(String, Type) 反序列化时去除json字符串中的空格

转载 作者:行者123 更新时间:2023-12-01 09:50:04 26 4
gpt4 key购买 nike

我正在尝试使用Gson将字符串反序列化为(“Length”)对象。但是当我反序列化字符串 0.77meter 时,它只会反序列化 0.77

长度等级:

package test;

public class Length {

private final Unit unit;
private final double value;

public enum Unit {
METER;
}

public Length(double value, Unit unit) {
this.value = value;
this.unit = unit;
}

public double getValue() {
return value;
}

public Unit getUnit() {
return unit;
}

}

LengthDeSerializer 类:

package test;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;

public class LengthDeSerializer implements JsonDeserializer<Length> {

@Override
public Length deserialize(JsonElement source, Type type, JsonDeserializationContext jdc) throws JsonParseException {

System.out.println(source);
// De-serialization happens after this
// but the json element is already wrongly modified

return null;

}

}

测试类:

package test;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.measure.quantity.Length;

public class AppTest {

public AppTest() throws Exception {

String testString = "0.077 meter";
GsonBuilder gb = new GsonBuilder();
gb.registerTypeAdapter(Length.class, new LengthDeSerializer());

Gson gson = gb.create();
gson.fromJson(testString, Length.class);

}

public static void main(String[] args) throws Exception {

new AppTest();

}

}

输出:

0.077

我做错了什么?这是一个已知的“问题”吗?

如果重要的话,我正在使用 Netbeans 8.1,Ubuntu 16.04、Gson 2.6.2、java 1.8.0_91

最佳答案

0.077 meter

不是有效的 json。尝试:

{"value":0.077, "unit":"meter"}

关于java - Gson.fromJson(String, Type) 反序列化时去除json字符串中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37654431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com