将嵌套的 json 数据解析为字符串
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,只有名称、版本和内容,其中内容只存储数组表示(章节和嵌套对象)作为字符串。
我尝试在 pojo 中将我的内容字段定义为字符串并设置 @SerializedName 注释以强制 gson 将数组作为字符串解析到其中,但这不起作用。
是否可以部分获取 json 作为字段并将其余部分(嵌套数组的)获取到我的 pojo 中的字符串字段中?
您可以为字符串数据类型定义自己的适配器。
E. G。 :
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();
现在可以将章节数据存储为字符串。
在 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"));
你可以试试这个。
上下文:我正在开发一个类似于 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,只有名称、版本和内容,其中内容只存储数组表示(章节和嵌套对象)作为字符串。
我尝试在 pojo 中将我的内容字段定义为字符串并设置 @SerializedName 注释以强制 gson 将数组作为字符串解析到其中,但这不起作用。
是否可以部分获取 json 作为字段并将其余部分(嵌套数组的)获取到我的 pojo 中的字符串字段中?
您可以为字符串数据类型定义自己的适配器。
E. G。 :
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();
现在可以将章节数据存储为字符串。
在 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"));
你可以试试这个。