gson在json值中解析逗号分隔值字符串中的项目

时间:2014-04-14 22:49:53

标签: java json csv gson

我使用json解析gson字符串。它类似于:

{
    "ACode": "aa",
    "RCode": "rr",
    "Errors": "e1,e2,e3"
}

我认为错误应该是一个正确的json数组,但我无法控制它。

我希望将错误放入java中的数组或集合中。使用带有逗号作为分隔符的String.split这很容易。但是,我是gson的新手,我不知道我是否会忽略它提供的解析逗号分隔字符串的功能。

是否有人知道gson是否可以自动处理此问题?

2 个答案:

答案 0 :(得分:0)

  

我想将错误放入java中的数组或集合中。

试试这个

String json = "{\"ACode\": \"aa\",\"RCode\": \"rr\", \"Errors\": \"e1,e2,e3\" }";

class ErrorsDeserializer implements JsonDeserializer<String[]> {

    public String[] deserialize(JsonElement json, Type typeOfT,
            JsonDeserializationContext context) throws JsonParseException {
        return ((JsonObject) json).getAsJsonPrimitive("Errors").getAsString().split(",");
    }
}

Gson gson1 = new GsonBuilder().registerTypeAdapter(String[].class, new ErrorsDeserializer())
        .create();

String[] errors = gson1.fromJson(json, String[].class);
for (String error : errors) {
    System.out.println(error);
}

答案 1 :(得分:0)

你可以创建一个带变量的类&#34; ACode&#34;,&#34; RCode&#34;,&#34;错误&#34;然后使用gson将其转换为该类,CustomObject obj2 = gson.fromJson(json,CustomObject .class);