[Backlogmanager] [FIWARE-JIRA] (HELP-13272) [fiware-stackoverflow] Generate array by traversing JSON JavaScript NodeJS

Fernando Lopez (JIRA) jira-help-desk at jira.fiware.org
Tue Jan 16 16:55:00 CET 2018


     [ https://jira.fiware.org/browse/HELP-13272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fernando Lopez reassigned HELP-13272:
-------------------------------------

    Assignee: Jose Manuel Cantera

> [fiware-stackoverflow] Generate array by traversing JSON JavaScript NodeJS
> --------------------------------------------------------------------------
>
>                 Key: HELP-13272
>                 URL: https://jira.fiware.org/browse/HELP-13272
>             Project: Help-Desk
>          Issue Type: Monitor
>          Components: FIWARE-TECH-HELP
>            Reporter: Backlog Manager
>            Assignee: Jose Manuel Cantera
>              Labels: fiware, fiware-orion, javascript, node.js
>
> Created question in FIWARE Q/A platform on 05-12-2017 at 15:12
> {color: red}Please, ANSWER this question AT{color} https://stackoverflow.com/questions/47655751/generate-array-by-traversing-json-javascript-nodejs
> +Question:+
> Generate array by traversing JSON JavaScript NodeJS
> +Description:+
> I am working with fiware and when making a subscriptions this information is being sent to a method that defined in my rest API, and I would like to save that information in my database.
> The information that comes to me from the ContextBroker is:
> {
>   "subscriptionId": "5a268a598dc68904bbc7b3cf",
>   "originator": "localhost",
>   "contextResponses": [
>     {
>       "contextElement": {
>         "type": "Temperature",
>         "isPattern": "false",
>         "id": "S_Temp001",
>         "attributes": [
>           {
>             "name": "Tem_int",
>             "type": "float",
>             "value": 22,
>             "metadatas": [
>               {
>                 "name": "accuracy",
>                 "type": "Float",
>                 "value": 44}
>             ]
>           },
>           {
>             "name": "Tem_out",
>             "type": "Integer",
>             "value": 22
>           }
>         ]
>       },
>       "statusCode": {
>         "code": "200",
>         "reasonPhrase": "OK"
>       }
>     }
>   ]
> }
> The method that I have defined in my API is this:
> // insertBD
>     function postinsertbdarduino1 (req, res) {
>       var inver = {
>         fiwareServicePath: String,
>         entityId: String,
>         entityType: String,
>         attrName: String,
>         attrType: String,
>         attrValue: String,
>         attrMd: String
>       };
>       var params = req.body;
>       // check if the pass && name etc arrive and encrypt
>         // Assign values ​​to the user object
>         //inver.entityId = params.entityId;
>         inver.fiwareServicePath = params.fiwareServicePath;
>         inver.entityId = params.id;
>         inver.entityType = params.type;
>         inver.attrName = params.name;
>             inver.attrType = params.attrType;
>             inver.attrValue = params.attrValue;
>             inver.attrMd = params.attrMd;
>         pool.getConnection (function (err, connection) {
>         if (err) {
>           console.log ('Error requesting a connection:' + err);
>           return;
>         }
>         console.log ("connection tests");
>         // if we want to add other conditions in the where would it be to put the fields and? and then to what is it equivalent
>         // 'SELECT * FROM all WHERE id =? AND username =? ', [Req.params.id, user.username], function (err, rows)
>         connection.query ('INSERT INTO inver SET?', [inver], function (err, rows) {
>           if (err)
>           {
>             throw err;
>             console.log ('Error when connecting' + error);
>           }
>           else
>           {
>             res.status (200) .json (rows);
>           }
>         });
>         // so that it can be reused by the pool, it is important to "release" it
>         connection.release ();
>         });
>     }
> For now I'm just passing the id, the type and the name.
> But he's saving my record in the empty database.
> How can i fix this?
> Thanks greetings.
> EDIT1
> I just launched the JSON I changed in my API method by the subscriptionId value inver.entityId = params.subscriptionId; and if the data arrives, but I need to recover the data " type ":" Temperature " " id ":" S_Temp001 ",
>      
> {
>                  "name": "Tem_int",
>                  "type": "float",
>                  "value": 22,
>                  "metadatas": [
>                    {
>                      "name": "accuracy",
>                      "type": "Float",
>                      "value": 44}
>                  ]
>                },
>      {
>                  "name": "Tem_out",
>                  "type": "Integer",
>                  "value": 22
>                }
> How can I get to that part of the JSON?
> Thank you.
> EDIT2
> Good,
> I modify the question.
> How can I run this JSON in NODEJS JavaScript:
>  {
>        "subscriptionId": "5a268a598dc68904bbc7b3cf",
>        "originator": "localhost",
>        "contextResponses": [
>          {
>            "contextElement": {
>              "type": "Temperature",
>              "isPattern": "false",
>              "id": "S_Temp001",
>              "attributes": [
>                {
>                  "name": "Tem_int",
>                  "type": "float",
>                  "value": 2,
>                  "metadatas": [
>                    {
>                      "name": "accuracy",
>                      "type": "Float",
>                      "value": 2}
>                  ]
>                },
>                {
>                  "name": "Tem_out",
>                  "type": "Integer",
>                  "value": 1
>                }
>              ]
>            },
>            "statusCode": {
>              "code": "200",
>              "reasonPhrase": "OK"
>            }
>          }
>        ]
>     }   
> Greetings and thank you.
> EDIT03
> Hello,
> I need to generate the following format for my array.
> var tmp = [['S_Temp001', 'Temperature', 'Tem_int', 'float', 2, 'accuracy',
> 'Float', 2], ['S_Temp001', 'Temperature', 'Tem_out', 'Integer', 1, 'accuracy',
> 'Float', 2]];
> var tmp = [];
>     for (var i = 0; i < json["contextResponses"].length; i++) {
>     tmp.push([json["contextResponses"][i].contextElement.id,
>              json["contextResponses"][i].contextElement.type,
>              json["contextResponses"][i].contextElement.attributes[0].name,
>              json["contextResponses"][i].contextElement.attributes[0].type,
>              json["contextResponses"][i].contextElement.attributes[0].value,
>              json["contextResponses"][i].contextElement.attributes[0].metadatas[0].name,
>              json["contextResponses"][i].contextElement.attributes[0].metadatas[0].type,
>              json["contextResponses"][i].contextElement.attributes[0].metadatas[0].value]);
>     console.log("tmp --> ",tmp);
>     }
> EDIT04 solved
> Hi,
> I have already found the solution, I add it in case it could be worth someone.
>   var tmp2 = [];
>       for (var i = 0; i < params.contextResponses.length; i++) {
>         for (var j = 0; j < params.contextResponses[i].contextElement.attributes.length; j++) {
>           for (var k = 0; k < params.contextResponses[i].contextElement.attributes[j].metadatas.length; k++) {
>             console.log("nuevo log antes de petar: " + params["contextResponses"][i].contextElement.attributes[j].metadatas[k].value);
>             tmp2.push([params.contextResponses[i].contextElement.id,
>                      params.contextResponses[i].contextElement.type,
>                      params.contextResponses[i].contextElement.attributes[j].name,
>                      params.contextResponses[i].contextElement.attributes[j].type,
>                      params.contextResponses[i].contextElement.attributes[j].value,
>                      params.contextResponses[i].contextElement.attributes[j].metadatas[k].name,
>                      params.contextResponses[i].contextElement.attributes[j].metadatas[k].type,
>                      params.contextResponses[i].contextElement.attributes[j].metadatas[k].value]);
>             console.log("tmp2 --> ",tmp2);
>           }
>         }
>     }
> a greeting



--
This message was sent by Atlassian JIRA
(v6.4.1#64016)


More information about the Backlogmanager mailing list

You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy   Cookies policy