Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java对象作为值保存到Redis_Java_Json_Object_Redis_Gson - Fatal编程技术网

将Java对象作为值保存到Redis

将Java对象作为值保存到Redis,java,json,object,redis,gson,Java,Json,Object,Redis,Gson,我想将一个非常复杂的java对象作为值保存到redis。因此,我尝试将此对象转换为Json(gson lib),但它不符合我的目的(请参阅其他问题:) 我想将上面提到的应用程序的复杂java对象作为值存储/序列化到redis,并稍后加载回复杂java对象(考虑以下注释:)。这只是为了评估的目的 如何将这个复杂的对象(最好是json转换)存储到redis和redis?每一条评论都会有帮助 更新1:与json的对话正在进行中,但随着应用程序中的进一步进程,系统将生成一个与XXX不兼容的java.u

我想将一个非常复杂的java对象作为值保存到redis。因此,我尝试将此对象转换为Json(gson lib),但它不符合我的目的(请参阅其他问题:)

我想将上面提到的应用程序的复杂java对象作为值存储/序列化到redis,并稍后加载回复杂java对象(考虑以下注释:)。这只是为了评估的目的

如何将这个复杂的对象(最好是json转换)存储到redis和redis?每一条评论都会有帮助


更新1:与json的对话正在进行中,但随着应用程序中的进一步进程,系统将生成一个与XXX不兼容的
java.util.LinkedHashMap

  SuperclassExclusionStrategy ex = new SuperclassExclusionStrategy();
  Gson gson = new GsonBuilder().addDeserializationExclusionStrategy(ex).addSerializationExclusionStrategy(ex).create();

  String json = gson.toJson(daoResult);

  daoResultJson = gson.fromJson(json, JavaObject_DAOListResult.class);
子类中有一些对象尚未转换回原始状态


已解决

我已经解决了使用另一个名为

现在我可以很好地处理我的对象了。在Gson中,json字符串中缺少许多空属性。使用json io,空属性也被转换。以下是解决方案:

 // convert daoResult to JSON
 jsonIO = JsonWriter.objectToJson(daoResult);
 // convert stored JSON to daoResult
 daoResultJson =  (DAOListResult) JsonReader.jsonToJava(jsonIO);

假设您解决了将对象转换为JSON的另一个问题(与此问题不同),我想,您可以将JSON字符串设置为Redis键,然后稍后再获取:

127.0.0.1:6379> SET blah '{"some": "x", "some_other": "y"}'
OK
127.0.0.1:6379> GET blah
"{\"some\": \"x\", \"some_other\": \"y\"}"

您需要在Java对象和JSON之间构建一个序列化器/反序列化器,但这就是使用Redis所需的全部工作。您也可以使用Redis散列与
HSET
HGET
来实现相同的功能,但是您在问题中没有提供足够的信息,我无法推荐更适合您的情况。

我能够将复杂的java对象转换为json,反之亦然,但对复杂对象的进一步处理引发了一个错误
java.util.LinkedHashMap与当前问题是将Json字符串转换回原始对象,给出的错误
java.util.LinkedHashMap与XXX不兼容