Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 既然我有嵌套的JSON数据,那么如何对getData()中的行进行建模?_Javascript_Google Apps Script_Google Data Studio_Google Apps Script Api - Fatal编程技术网

Javascript 既然我有嵌套的JSON数据,那么如何对getData()中的行进行建模?

Javascript 既然我有嵌套的JSON数据,那么如何对getData()中的行进行建模?,javascript,google-apps-script,google-data-studio,google-apps-script-api,Javascript,Google Apps Script,Google Data Studio,Google Apps Script Api,我想在DataStudio中为每个人显示以下字段:name、age、addresses\u id、addresses\u city、addresses\u primary 我的JSON数据 { “数据”:[ { “姓名”:“Lio”, “年龄”:30岁, “地址”:[ { “id”:7834, “城市”:“ML”, “小学”:1 }, { “id”:5034, “城市”:“MM”, “小学”:1 } ] }, { “姓名”:“卡利”, “年龄”:41岁, “地址”:[ { “id”:3334,

我想在DataStudio中为每个人显示以下字段:
name、age、addresses\u id、addresses\u city、addresses\u primary

我的JSON数据
{
“数据”:[
{
“姓名”:“Lio”,
“年龄”:30岁,
“地址”:[
{
“id”:7834,
“城市”:“ML”,
“小学”:1
},
{
“id”:5034,
“城市”:“MM”,
“小学”:1
}
]
},
{
“姓名”:“卡利”,
“年龄”:41岁,
“地址”:[
{
“id”:3334,
“城市”:“WK”,
“小学”:1
},
{
“id”:1730,
“城市”:“DC”,
“小学”:1
}
]
},
...
]

}
如您所知,对于数据集的每个名称,您显然有不止一行(一个人有多个地址)。DataStudio只接受每个字段的单个数据,因为根本不支持数组。所以你需要在这方面下功夫

有一些方法可以解决这个问题,但请始终记住:

  • getSchema()
    应该返回连接器的所有可用字段(顺序并不重要,因为DataStudio总是按字母顺序对可用字段排序)
  • getData()
    应返回值列表。但这里的顺序是相关的:它应该与传递给
    getData()
    的参数相同(这意味着结果应该是动态的,有时返回所有值,有时不返回,并且顺序可能会更改)
解决方案1:每个记录返回多行 因为可以为每个名称生成多行,所以只需这样做

为此,字段定义(
getSchema()
)应包括
地址id
地址城市
地址主要
(如果需要知道地址在列表中的位置,还可以添加
地址顺序

假设调用
getData()
时所有字段的描述顺序相同,
rows
数组应该如下所示:

"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Lio", 30, "5034", "MM", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  {
    "values": ["Kali", 41, "1730", "DC", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "[{\"id\": 7834, \"city\": "ML", \"primary\": 1}, {\"id\": 5034, \"city\": \"MM\", \"primary\": 1}]"]
  },
  {
    "values": ["Kali", 41, "[{\"id\": 3334, \"city\": \"WK\", \"primary\": 1}, {\"id\": 1730, \"city\": \"DC\", \"primary\": 1}]"]
  },
  ...
]
依我看,这是最好的数据解决方案

解决方案2:只返回一个地址,忽略其他地址 如果您喜欢每人一行,则可以获取其中一个地址并仅显示它(通常是主/主地址或第一个地址)

要实现这一点,字段定义(
getSchema()
)应该包括
address\u id
address\u city
address\u primary
字段

假设调用
getData()
时所有字段的描述顺序相同,
rows
数组应该如下所示:

"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Lio", 30, "5034", "MM", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  {
    "values": ["Kali", 41, "1730", "DC", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "[{\"id\": 7834, \"city\": "ML", \"primary\": 1}, {\"id\": 5034, \"city\": \"MM\", \"primary\": 1}]"]
  },
  {
    "values": ["Kali", 41, "[{\"id\": 3334, \"city\": \"WK\", \"primary\": 1}, {\"id\": 1730, \"city\": \"DC\", \"primary\": 1}]"]
  },
  ...
]
解决方案3:返回在字段中序列化的所有地址 如果您确实需要所有信息,但不需要复杂的方案,这将非常有用

只需在字段定义(
getSchema()
)中创建一个名为
addresses
的字段,并将JSON作为字符串(或您想要的任何其他格式)写入其中

假设调用
getData()
时所有字段的描述顺序相同,
rows
数组应该如下所示:

"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Lio", 30, "5034", "MM", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  {
    "values": ["Kali", 41, "1730", "DC", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "[{\"id\": 7834, \"city\": "ML", \"primary\": 1}, {\"id\": 5034, \"city\": \"MM\", \"primary\": 1}]"]
  },
  {
    "values": ["Kali", 41, "[{\"id\": 3334, \"city\": \"WK\", \"primary\": 1}, {\"id\": 1730, \"city\": \"DC\", \"primary\": 1}]"]
  },
  ...
]
此解决方案可能看起来毫无意义,但如果确实需要,可以在DataStudio中使用正则表达式与此数据交互

解决方案4:为每个地址创建不同的字段 如果您确定所有记录都有最大数量的地址(例如,在您的示例中,两个名称都有2个地址),则可以创建多个字段

您的字段定义(
getSchema()
)应该包括字段
address\u id1
address\u city1
address\u primary1
address\u id2
<代码>地址\u primaryN


我不会解释在这种情况下,
应该是什么样子的,但通过其他示例也不难猜测。

正如您已经知道的,对于数据集的每个名称,您显然有不止一行(一个人有多个地址)。DataStudio只接受每个字段的单个数据,因为根本不支持数组。所以你需要在这方面下功夫

有一些方法可以解决这个问题,但请始终记住:

  • getSchema()
    应该返回连接器的所有可用字段(顺序并不重要,因为DataStudio总是按字母顺序对可用字段排序)
  • getData()
    应返回值列表。但这里的顺序是相关的:它应该与传递给
    getData()
    的参数相同(这意味着结果应该是动态的,有时返回所有值,有时不返回,并且顺序可能会更改)
解决方案1:每个记录返回多行 因为可以为每个名称生成多行,所以只需这样做

为此,字段定义(
getSchema()
)应包括
地址id
地址城市
地址主要
(如果需要知道地址在列表中的位置,还可以添加
地址顺序

假设调用
getData()
时所有字段的描述顺序相同,
rows
数组应该如下所示:

"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Lio", 30, "5034", "MM", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  {
    "values": ["Kali", 41, "1730", "DC", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "7834", "ML", 1]
  },
  {
    "values": ["Kali", 41, "3334", "WK", 1]
  },
  ...
]
"rows": [
  {
    "values": ["Lio", 30, "[{\"id\": 7834, \"city\": "ML", \"primary\": 1}, {\"id\": 5034, \"city\": \"MM\", \"primary\": 1}]"]
  },
  {
    "values": ["Kali", 41, "[{\"id\": 3334, \"city\": \"WK\", \"primary\": 1}, {\"id\": 1730, \"city\": \"DC\", \"primary\": 1}]"]
  },
  ...
]
依我看,这是最好的数据解决方案

解决方案2:只返回一个地址,忽略其他地址 如果您喜欢每人一行,则可以获取其中一个地址并仅显示它(通常是主/主地址或第一个地址)

为了实现这一点,字段定义(
getSchema()
)应该包括字段
address\u id
address\u c