有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢?
例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Session的参数。执行(语句)以执行。
是否可以复制更新对象?
补充:
我真正的目的是存储Update
然后检索并执行它。所以我想我可以将其保存为JSON String
,然后将其检索并反序列化为原始的Update
实例并执行它。如果不是一个好方法,我如何存储Update
然后检索并执行它?
虽然我可以存储Update
的文本查询
以及检索并执行文本查询
,但Update
中的一些其他信息可能会丢失,例如ConistencyLevel
。
org.json提供了一个简单的API来处理json。有一种方法可以基于类的getter创建类实例的JSONObject。例如:
public class MyClass{
private int id;
private String name,
public MyClass(int id_, String name_) {
this.id = id_;
this.name = name_;
}
public int getId() { return this.id; }
public int getName() { return this.name; }
//Create a JSONObject with a key-value for each getter of your class
public JSONObject toJson(){
return new JSONObject(this);
}
}
然后,在您的代码中:
MyClass obj = new MyClass(1, "doe");
JSONObject json = obj.toJson();
System.out.println(json.toString());
// -> print : {"id":1,"name":"doe"}
API还提供了不同的解析器,您可以使用提供的JSONObject对类的构造函数进行编码:
public MyClass(JSONObject json){
this.id= json.getInt("id");
this.name= json.getString("name");
}
完整文档:org.json官方文档
在最坏的情况下,您总是可以考虑创建自己的自定义(反)序列化程序代码。
看这里或那里进一步阅读。
含义:您可以查看您打算“序列化”的类的实现;然后编写适用于该实现的代码。
对第三方代码这样做的主要缺点是:现在必须跟踪对该第三方代码的更改;例如,对该更新类的更改可能很容易破坏您的自定义(反)序列化程序代码。
只需转换QueryBuilder。使用方法将更新为字符串
如果要存储、检索和执行QueryBuilder。更新查询,您不必将其序列化和反序列化为json。
String query = QueryBuilder.update("exp").with(QueryBuilder.set("data", "This is a test data")).toString();
//Now you can store the text query directly to cassandra
//And retrieve the text query
session.execute(query); //Execute the query
这是toString()的代码
@Override
public String toString() {
try {
if (forceNoValues)
return getQueryString();
// 1) try first with all values inlined (will not work if some values require custom codecs,
// or if the required codecs are registered in a different CodecRegistry instance than the default one)
return maybeAddSemicolon(buildQueryString(null, CodecRegistry.DEFAULT_INSTANCE)).toString();
} catch (RuntimeException e1) {
// 2) try next with bind markers for all values to avoid usage of custom codecs
try {
return maybeAddSemicolon(buildQueryString(new ArrayList<Object>(), CodecRegistry.DEFAULT_INSTANCE)).toString();
} catch (RuntimeException e2) {
// Ugly but we have absolutely no context to get the registry from
return String.format("built query (could not generate with default codec registry: %s)", e2.getMessage());
}
}
}
您可以看到它返回了实际的查询字符串
问题内容: 我在使用AJAX访问的Java服务器应用程序中有一个字符串。它看起来像以下内容: 当从服务器提取字符串时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?还是我必须手动拆分字符串并手动构建对象? 问题答案: 现代浏览器支持。 在不浏览器,您可以包括在库中。
问题内容: 如何在JavaScript中将对象序列化为JSON? 问题答案: 您正在寻找。
问题内容: 我需要将一些对象序列化为JSON并发送到WebService。如何使用org.json库?否则我将不得不使用另一个?这是我需要序列化的类: 我只放了类的变量和构造函数,但也有getter和setter方法。所以如果有人可以帮忙 问题答案: 没有注释的简单方法是使用Gson库 就那么简单:
问题内容: 我有由第三方编码为固定长度数组的json’ed 元组数组: 我想使用json魔术来获取的实例列表 请帮助我放置适当的注释,以使ObjectMapper发挥作用。 我无法控制传入的格式,而我所有的google’n都以答案来回答如何将适当的json对象(而非数组)数组映射到对象列表 问题答案: 添加以下注释: 并且它应该根据需要序列化条目。 另外:然后使用它来强制执行特定顺序是最安全的,因
问题内容: 我想知道如何让Jackson JSON库将JSON反序列化为现有对象?我试图找到如何做到这一点。但它似乎只能接受一个Class并实例化它本身。 或者,如果不可能,我想知道是否有任何Java JSON反序列化库都可以做到。 对于C#,这似乎是一个相应的问题:将数据从JSON字符串覆盖到现有对象实例。似乎JSON.NET具有PopulateObject(string,object)。 问题
问题内容: 我需要将Objective- C对象序列化和反序列化为JSON以存储在CouchDB中。人们是否有通用解决方案最佳实践的示例代码?我看了几个JSON框架,它们在NSDictionary / NSArray级别停止了。即,许多框架会将NSDictionary / NSArray序列化和反序列化为JSON。但是我仍然要做将NSDictionary转换为Objective-C对象的工作。 为