gpt4 book ai didi

java - 将 Intent 的 json 字符串转换为 Intent 的对象,给出异常

转载 作者:太空狗 更新时间:2023-10-29 12:50:52 24 4
gpt4 key购买 nike

我正在使用 Gson 类将 JSON 字符串数据转换为 Intent目的。但是我遇到了异常。

Intent 的 JSON 字符串:

{
"targetIntent":{
"mAction":"android.intent.action.VIEW",
"mData":{
"authority":{
"decoded":"com.android.contacts",
"encoded":"com.android.contacts"
},
"fragment":{

},
"path":{
"decoded":"NOT CACHED",
"encoded":"/contacts/lookup/1471i541ce89b89ad6a59"
},
"query":{

},
"scheme":"content",
"uriString":"NOT CACHED",
"host":"NOT CACHED",
"port":-2
},
"mFlags":0
}
}

转化码:

Intent targetIntent =
gson.fromJson(histroyDataObject.getString("targetIntent"), Intent.class);

这给出了异常(exception):

Cause: Instantiation Exception
Detail Message: Failed to invoke private android.net.Uri() with no args

堆栈跟踪:

08-31 01:08:19.045: W/System.err(290): Caused by: java.lang.InstantiationException: android.net.Uri
08-31 01:08:19.065: W/System.err(290): at java.lang.reflect.Constructor.constructNative(Native Method)
08-31 01:08:19.065: W/System.err(290): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
08-31 01:08:19.065: W/System.err(290): at com.google.gson.internal.ConstructorConstructor$2.construct(ConstructorConstructor.java:91)
08-31 01:08:19.076: W/System.err(290): ... 24 more

感谢您的帮助。

最佳答案

我的赌注是 Intent#uriString类型为 android.net.Uri它没有无参数公共(public)构造函数。我的意思是你必须写 JsonDeserializer<Uri>像这样:

public class UriDeserializer implements JsonDeserializer<Uri> {
@Override
public Uri deserialize(final JsonElement src, final Type srcType,
final JsonDeserializationContext context) throws JsonParseException {
return Uri.parse(src.getAsString());
}
}

然后通过GsonBuilder注册:

Gson gson = new GsonBuilder()
.registerTypeAdapter(Uri.class, new UriDeserializer())
.create();

编辑:

如果任何属性未定义公共(public)无参数构造函数,您必须注册自定义适配器。您可以在 Gson docs - Custom Serialization and Deserialization 中阅读更多内容.

关于java - 将 Intent 的 json 字符串转换为 Intent 的对象,给出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204264/

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