java - 将嵌套的 json 数据解析为字符串

标签 java arrays json parsing gson

上下文:我正在开发一个类似于 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 中的字符串字段中?

最佳答案

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"));

你可以试试这个。

关于java - 将嵌套的 json 数据解析为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30449364/

相关文章:

javascript - 如何在 Javascript 中解析以下 AJAX 响应?

java - Jackson - 具有双向关系的实体序列化(避免循环)

javascript - 理解 Javascript 中的嵌套数组

java - 使用SBT构建scala以制作具有依赖项的JAR和文件夹

java - SoapUI 执行涉及 XSD 的 WSDL 时出现问题,其中包括 (<xsd :include/>) another XSD

java - 从 Java 使用 shmget() 访问在 C 中创建的共享内存

PHP str_replace 用数组中的随机替换来替换需要?

c# - 使用 Emgu 读取图像和将其读取为字节数组之间的区别

php - 使用 JSON 的 MySQL 查询

java - 如何解决: java. io.IOException: Stream closed