首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读写json中的jsonlite

读写json中的jsonlite
EN

Stack Overflow用户
提问于 2021-12-06 18:24:23
回答 1查看 388关注 0票数 0

其任务是加载一个json,操作一些数据并进行回写。第一步是用相同的输出和输入读写json文件,但事实并非如此。这里有一个旨在解决问题的测试文件:

代码语言:javascript
复制
{
  "hourly": [
      {
        "Temperatur": {
          "Datum": ["2021-09-24 21:00:00", "2021-09-24 22:00:00"],
          "Vorhersage": [14.82, 14.83],
          "Referenz": [16.6, 16.2],
          "DWD_Name": ["Elpersbüttel", "Elpersbüttel"],
          "Export": [17.2, 16.71],
          "color": ["rgb(0,128,0)", "rgb(0,128,0)"],
          "Status": ["ok", "ok"],
          "min": [13.05, 12.81],
          "max": [17, 17]
        }},
      {
        "Temperatur2": {
          "Datum": ["2021-09-24 21:00:00", "2021-09-24 22:00:00"],
          "Vorhersage": [13.82, 14.83],
          "Referenz": [16.6, 16.2],
          "DWD_Name": ["Elpersbüttel", "Elpersbüttel"],
          "Export": [17.2, 16.71],
          "color": ["rgb(0,128,0)", "rgb(0,128,0)"],
          "Status": ["ok", "ok"],
          "min": [13.05, 12.81],
          "max": [17, 18]
        }
      }
    ]
}

然而,jsonlite改变了数据结构:

代码语言:javascript
复制
library(jsonlite)
id = "test3" # my testfile
setwd("/path/")
myjs = fromJSON(paste0(id,".json"),simplifyVector = T) 
write_json(myjs, paste0(id,"_.json"), pretty = T) # output file 'test3_.json'

这是我得到的结果:

代码语言:javascript
复制
{
  "hourly": [
    {
      "Temperatur": {
        "Datum": ["2021-09-24 21:00:00", "2021-09-24 22:00:00"],
        "Vorhersage": [14.82, 14.83],
        "Referenz": [16.6, 16.2],
        "DWD_Name": ["Elpersbüttel", "Elpersbüttel"],
        "Export": [17.2, 16.71],
        "color": ["rgb(0,128,0)", "rgb(0,128,0)"],
        "Status": ["ok", "ok"],
        "min": [13.05, 12.81],
        "max": [17, 17]
      },
      "Temperatur2": {
        "Datum": {},
        "Vorhersage": {},
        "Referenz": {},
        "DWD_Name": {},
        "Export": {},
        "color": {},
        "Status": {},
        "min": {},
        "max": {}
      }
    },
    {
      "Temperatur": {
        "Datum": {},
        "Vorhersage": {},
        "Referenz": {},
        "DWD_Name": {},
        "Export": {},
        "color": {},
        "Status": {},
        "min": {},
        "max": {}
      },
      "Temperatur2": {
        "Datum": ["2021-09-24 21:00:00", "2021-09-24 22:00:00"],
        "Vorhersage": [13.82, 14.83],
        "Referenz": [16.6, 16.2],
        "DWD_Name": ["Elpersbüttel", "Elpersbüttel"],
        "Export": [17.2, 16.71],
        "color": ["rgb(0,128,0)", "rgb(0,128,0)"],
        "Status": ["ok", "ok"],
        "min": [13.05, 12.81],
        "max": [17, 18]
      }
    }
  ]
}

如果simplifyVector = F,则会产生嵌套数组。

代码语言:javascript
复制
{
  "hourly": [
    {
      "Temperatur": {
        "Datum": [
          ["2021-09-24 21:00:00"],
          ["2021-09-24 22:00:00"]
        ],
        "Vorhersage": [
          [14.82],
          [14.83]
        ],
        "Referenz": [
          [16.6],
          [16.2]
        ],
        "DWD_Name": [
          ["Elpersbüttel"],
          ["Elpersbüttel"]
        ],
        "Export": [
          [17.2],
          [16.71]
        ],
        "color": [
          ["rgb(0,128,0)"],
          ["rgb(0,128,0)"]
        ],
        "Status": [
          ["ok"],
          ["ok"]
        ],
        "min": [
          [13.05],
          [12.81]
        ],
        "max": [
          [17],
          [17]
        ]
      }
    },
    {
      "Temperatur2": {
        "Datum": [
          ["2021-09-24 21:00:00"],
          ["2021-09-24 22:00:00"]
        ],
        "Vorhersage": [
          [13.82],
          [14.83]
        ],
        "Referenz": [
          [16.6],
          [16.2]
        ],
        "DWD_Name": [
          ["Elpersbüttel"],
          ["Elpersbüttel"]
        ],
        "Export": [
          [17.2],
          [16.71]
        ],
        "color": [
          ["rgb(0,128,0)"],
          ["rgb(0,128,0)"]
        ],
        "Status": [
          ["ok"],
          ["ok"]
        ],
        "min": [
          [13.05],
          [12.81]
        ],
        "max": [
          [17],
          [18]
        ]
      }
    }
  ]
}

在这两种情况下,下面的问题是fromJSON生成一个list对象,它不能正确地表示输入的数据结构.或者write_json (tojson)用错误的方式解释它。解决办法可以是使用simplifyVector = F,然后重新加载并修复数组。

EN

回答 1

Stack Overflow用户

发布于 2021-12-07 16:53:25

选项simplifyDataFrame = F解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70250150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档