在我的项目中,我正在使用gson。当我想将我的类的json子对象反序列化为String时,我遇到了问题 例如
Class X
{
Object1 x1 // expected json -> '{"param1": "pvalue", "param2":"pvalue"}'
Object2 x2 //expected json -> '{"param1": "pvalue", "param2":"pvalue"}'
String x3 //expected json ->'{"param1": "pvalue", "param2":"pvalue"}'
}
Gson无法对x3进行反序列化,因为它的内容是json对象,但我需要它作为字符串而不是Java对象。 X级 { Object1 x1 //期望的json - > '{“param1”:“pvalue”,“param2”:“pvalue”}' Object2 x2 //期望的json - > '{“param1”:“pvalue”,“param2”:“pvalue”}' 字符串x3 //期望的json - >'{“param1”:“pvalue”,“param2”:“pvalue”}' } 如何在字符串中保存x3的内容而不是对象 感谢
答案 0 :(得分:0)
您可以尝试为字符串注册自定义TypeAdapter并进行修复。
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(String.class, new MyTypeAdapter());
Gson gson = gsonBuilder.create();
....
答案 1 :(得分:0)
以下代码运行正常。不确定这是否是你试图解析的Json结构。
public class Test
{
public static void main( String[] args )
{
Gson gson = new Gson();
Response response = gson.fromJson( THE_JSON, Response.class );
System.out.println( response.object1 );
System.out.println( response.object1 );
System.out.println( response.stringx );
}
class Response
{
@SerializedName("Objectx1")
Objectx object1;
@SerializedName("Objectx2")
Objectx object2;
@SerializedName("Stringx")
String stringx;
class Objectx
{
@SerializedName("param1")
String param1;
@SerializedName("param2")
String param2;
}
}
}
THE_JSON是:
{
"Objectx1": {
"param1": "value1",
"param2": "value2"
},
"Objectx2": {
"param1": "value3",
"param2": "value4"
},
"Stringx": '{
"param3": "value3",
"param4": "value4"
}'
}
请注意,在Stringx值周围输入单个。