离子打字稿在数据结构上字符串化返回空数组

时间:2018-10-04 10:15:56

标签: javascript json typescript ionic-framework stringify

我在打字稿中输入了数据结构,这是一个示例:

    {"username":"xxxxxxxxxxx",
    "session":"xxxxxxxxxxx",
    "items":[{
            "id_item": 1,
            "identificador": "Italia Ejemplo 2 RESTTEST",
            "proyecto": 1,
            "tipo_formulario": 1,
            "gps_points": [{
                "id_gps": 26,
                "fechaAlta": "2018-09-05 11:58:31",
                "fechaMod": "2018-09-07 07:53:08",
                "accuracy": "1.555",
                "provider": "net",
                "latitud": "1.555",
                "longitud": "1.235",
                "item": 29
            }],
            "archivos": [],
            "fotografias": [],
            "datos": [
                {
                    "id_dato": 14,
                    "valor": "texto de ejemplo",
                    "item": 1,
                    "campo": 1,
                    "formulario": 1,
                    "errores": null,
                    "fechaAlta": "2018-09-05 12:01:44",
                    "fechaMod": "2018-09-07 07:32:22"
                }],
            "descripcion": "formulario de italia",
            "fechaAlta": "2018-09-04 02:00:00",
            "fechaMod": "2018-09-05 15:24:44",
            "propietario": 1
        }]
    }

但是当运行JSON.stringify时,您有:

    {"username":"xxxx", "session":"xxxxxxx", "items":[]}

该方法忽略项目数组,并向服务器发送空信息。

感谢大家的阅读和回复。

这是代码片段:

  uploadItems(user_id, username:string, session:session)
  {    
  let upload = {
  username:username,
  session:session,
  items:[]} 
  let query = "SELECT * FROM item WHERE modificado = 1 AND proyecto 
  IN 
  \
  (SELECT id_proyecto FROM proyecto WHERE usuario = " + user_id + 
  ");"

  this.db.executeSql(query,[])
  .then((res:any) =>  {
  console.log(res)
  for(let i = 0; i < res.rows.length; i ++)
  {
    let entry = {

      id_item:res.rows.item(i).remote_id_item,
      identificador:res.rows.item(i).identificador,
      proyecto:res.rows.item(i).proyecto,
      tipo_formulario:res.rows.item(i).formulario,
      descripcion:res.rows.item(i).descripcion,
      fechaAlta:res.rows.item(i).fecha_alta,
      fechaMod:res.rows.item(i).fecha_mod,
      propietario:res.rows.item(i).propietario,
      gps_points:[],
      datos:[]
    }

    entry.gps_points.push(this.getGpsPointbyItem(res.rows.item(i).id_item))
    this.getDatabyItemForm(res.rows.item(i).id_item, res.rows.item(i).formulario)
    .then((dataRes:any) => {
        for(let j = 0; j < dataRes.rows.length; j++)
        {
          entry.datos.push(dataRes.rows.item(j))
        }
        upload.items.push(entry)            
    })
    .catch(err => console.error(err))
  }   
  this.rest.upload(JSON.stringify(upload)) 
  //This code generates data structure whith same structure what i 
  write in the post.  
})
.catch(err => console.error(err))
}

我尝试console.log(upload),它显示正确的输出,但是当我 使用json.stringify我有一个字符串,其中“项目”字段为空。

注意:它是一个具有深度3上传的数据结构-> items(array)-> datos(数组)。

0 个答案:

没有答案