[英]Parse nested json data into string
上下文:我正在研究类似CMS系统的中间人服务。 我在服务器上放了一个完整的复杂json文件,然后我需要将其提供给需要json内容的客户端。 (现在让我们忽略验证部分)
我有一个顶级名称,版本和内容字段。 内容(章节)以嵌套的复杂对象(约5层深度)的数组的形式存在。
{
"name": "MyCourse",
"version": 12345,
"chapters": [
{
"name": "Chapter01",
"content": {
"menu": {
"id": "Chapter01_EndMenu",
"file": "ch1_end_op.wav"
},
"score": {
"id": "Chapter01_Score",
"files": [....
我尝试过的(并且可以工作的):建立我的pojo来镜像json结构,其中的内容(章节)作为复杂对象的列表存在。 调用gson解析器就可以了。
我想做的是:有一个简单的pojo,它只包含名称,版本和内容,其中内容只是将数组表示形式(章节和嵌套对象)存储为String。
我尝试在pojo中将我的content字段定义为String,并设置@SerializedName注释以强制gson将数组解析为字符串,但这是行不通的。
是否有可能部分将json作为字段并将其余部分(嵌套数组)放入pojo的字符串字段中?
在JSONObject
很简单,您可以使用键获取JSON字符串。
String jsonString = "{ \"name\": \"MyCourse\", \"version\": 12345, \"chapters\": [ { \"name\": \"Chapter01\"}]}";
JSONObject jsonObject = new JSONObject(jsonString);
Details details = new Details();
details.setName(jsonObject.get("name"));
details.setVersion(jsonObject.get("version"));
details.setChapters(jsonObject.get("chapters"));
你可以试试看
您可以为String数据类型定义自己的适配器。
例如 :
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(String.class, new JsonDeserializer<String>() {
public String deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context)
throws JsonParseException {
return json.toString();
}
});
Gson gson = builder.create();
现在,它可以将章节数据存储为String。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.