如何在不知道密钥的情况下获取JSON对象的第一个密钥对元素,并在节点红色中删除它

时间:2017-02-07 18:20:44

标签: javascript json node-red

我正在编写一个node-red的函数节点,它接受一个带有任意键值对的JSON对象:

{ 30000c690b61: "m8Jp_M7Lc0",
  30000c290bdc65: "S3qg3Rkl8Y", 
  30000c290bdf1c: "KsLpfVrR4W", 
  30000c290be5d0: "oXasuCWV_q", 
  30000c29e618: "6Q67v-gJkS" … }

我想访问此对象中的第一个密钥对元素,存储它,然后将其删除。我尝试了很多东西,但由于它是节点红色,它似乎表现不同

3 个答案:

答案 0 :(得分:7)

var firstKey = Object.keys(myObject)[0];
delete myObject[firstKey ];

答案 1 :(得分:2)

首先获得"" JSON对象表达式的元素很难,因为JSON对象不是有序集合。他们被命令""在JSON中只是因为它们必须具有字符序列化,这是一个有序的字符序列,但是两个具有不同排序属性的JSON对象表达式意味着传达相同的语义。

如果您愿意信任JavaScript环境以在迭代时保留密钥的顺序(这不是ECMAScript规范中定义的假设,但在您的环境的实现中可能也是如此),您可以:

var myObj = JSON.parse("{ ... }");
var firstKey = Object.keys(myObj)[0];
delete myObj[firstKey];

如果您不想做出这样的不安全假设,则需要读取JSON字符串并手动确定第一组引号之间的键名。这需要付出一些努力,因为您还必须处理可能出现在密钥名称内的转义引号。

答案 2 :(得分:0)

以下代码将从JSON对象获取第一个元素密钥对并删除它。

var resultJSON = '{ "30000c690b61": "m8Jp_M7Lc0",
  "30000c290bdc65": "S3qg3Rkl8Y", 
  "30000c290bdf1c": "KsLpfVrR4W", 
  "30000c290be5d0": "oXasuCWV_q", 
  "30000c29e618": "6Q67v-gJkS"}';
var result = $.parseJSON(resultJSON);
$.each(result, function(k, v) {
  //display the key and value pair
  alert(k + ' is ' + v);
  //For Delete the first key pair
   delete result['k'];
  exit;
});