如何将具有键值对的Json字符串转换为仅具有值的字符串

时间:2013-05-14 11:25:04

标签: java json

我实际上是通过这种方式将我的pojo数据转换为json字符串,

 Gson gson = new GsonBuilder().disableHtmlEscaping().create();
    String json=gson.toJson(user);

我得到了json字符串,但这不是我真正需要的格式,我得到了

json = {"userID":300,"userName":"asd","password":"s","enabled":1}

所以,我想用键值对转换Json字符串,如下所示,

{"userID":300,"userName":"asd","password":"s","enabled":1}

进入Json字符串,只有值(没有键),如下所示

[300,"asd","s",1]

3 个答案:

答案 0 :(得分:1)

所以我继续你的字符串json

// lets deserialize your json string and get a hashmap
Type collectionType = new TypeToken<HashMap<String, Object>>(){}.getType();
HashMap<String, Object> hm = gson.fromJson(json, collectionType);
String finalJson = gson.toJson(hm.values());
// aand taa-daa!!
System.out.println(finalJson);

现在finalJson[300,"asd","s",1]

编辑:库如下:

import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

答案 1 :(得分:0)

我可以问你为什么要那样做?如果您在没有key-value的情况下检索该Json,例如,300是他的id而不是他的money属性?

你不能区分你的属性,我不推荐它。

无论如何,我发现这样做的唯一方法是手动“破坏”你的字符串,用空值替换你的属性,比如json.replace("\"userID\"", "");,你应该为每个属性做。

答案 2 :(得分:0)

您可以将user的属性打包为List<Object>,然后将JSON打包。{/ p>

这意味着GSON在List之外制作了一个JSON阵列,你会得到你想要的。

因为这似乎没有多大意义作为用例你必须做一些硬编码 - 我不认为GSON可以为你做这个:

final List<Object> props = new LinkedList<>();
props.add(user.getId());
props.add(user.getUserName());
//etc
final String json=gson.toJson(props);