我正在努力想办法在apolloclient中添加一个自定义类型适配器。
对于一个突变,我们的服务器需要JSON输入。相应的iOS应用程序正在传入一个JSON字符串。
当我传入字符串时,会收到一条消息,询问我是否忘记添加customtype。
这是我的尝试:
平地
apollo {
useSemanticNaming = true
customTypeMapping['ISOTime'] = "java.util.Date"
customTypeMapping['JSON'] = "java.lang.JSONObject"
}
这就是它被实例化的地方。
val jsonCustomTypeAdapter = object : CustomTypeAdapter<JSONObject> {
override fun decode(value: CustomTypeValue<*>): JSONObject {
return JSONObject()
}
override fun encode(value: JSONObject): CustomTypeValue<*> {
return CustomTypeValue.GraphQLJsonString(value.toString())
}
}
mApolloClient = ApolloClient
.builder()
.serverUrl(baseUrl)
.addCustomTypeAdapter(jsonCustomTypeAdapter)
.normalizedCache(cacheFactory, CacheKeyResolver.DEFAULT)
.httpCache(ApolloHttpCache(cacheStore, null))
.okHttpClient(mHttpClient)
.build()
Apollo似乎生成了一个实现scalarType的customtype枚举,但我不确定是否使用它,也不知道如何使用它。
@Generated("Apollo GraphQL")
public enum CustomType implements ScalarType {
JSON {
@Override
public String typeName() {
return "Json";
}
@Override
public Class javaType() {
return Object.class;
}
},
ID {
@Override
public String typeName() {
return "ID";
}
@Override
public Class javaType() {
return String.class;
}
}
}
我已经尝试了
apolloandroid github
但它对我没有作用,它在Java中,在我把它转换成Kotlin之后,它就不编译了。
如有任何提示或指示,我们将不胜感激。谢谢。