将作为对象的字符串属性存储的json作为JSON对象发送到客户端

时间:2015-04-26 13:21:39

标签: java json jackson

我使用cassandra作为数据库,并在A对象的int create_threads(t_lemin *lem) { int i; pthread_t **threads; int j; void *ret; t_tree *tmp; j = -1; printf("starting algo\n"); threads = xmalloc(sizeof(pthread_t)); i = count_leaf(lem->start); tmp = lem->start; printf("%d\n", tmp->visited[0]); while (++j != i) { tmp->leaf[j]->thread_nbr = j; pthread_create(threads[j], NULL, find_way_out, tmp->leaf[j]); usleep(100); } i = -1; while (++j != i) (void)pthread_join (*threads[j], &ret); //printf("%d\n", *((int*)ret)); return (0); } 字段中将用户地址存储为JSON。

"address"

然后DB列中的User行如下

User

但是当我从DB查询class User { private long id; private String name; private String address; } 对象并作为REST api的结果返回时,我看到Jackson将User对象转换为JSON。但是我发现id | name | address ================================ 12345| jhon | {"hno":"12-10-46/3","street":"lavella road","city":"begaluru"} 字段是字符串类型而不是另一个JSON对象。但我希望“地址”应该被解释为客户端的JSON对象。

我怎么能说杰克逊将内部字符串属性转换为JSON呢?

2 个答案:

答案 0 :(得分:2)

我认为您应该在地址栏中使用注释@JsonRawValue。

  

@JsonRawValue:可用于指定该属性的每个属性标记   财产的价值将被包括在序列化中“完全”   因为没有逃脱或装饰 - 对于嵌入很有用   输出中预先序列化的JSON(或正在使用的任何数据格式)

https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations

答案 1 :(得分:0)

它被视为一个字符串,因为它是一个字符串。您需要将其转换为对象。不熟悉Java我设法找到这个使用javascript引擎将字符串评估为对象的代码片段,就像浏览器一样:

 ScriptEngineManager manager = new ScriptEngineManager();
 ScriptEngine engine = manager.getEngineByName("js");        
 Object result = engine.eval([Your Address String Variable Here]);

然后结果应该是从字符串派生的对象。

希望这有帮助。