你好,我是节点js的新手。我想添加一个带有结果数组的键并将其打印在json数组中。
connection.modal.find( { 'id' : '2' }, function ( err, result ) {
var response = {};
result['add_key'] = 'abcdd';
response['success'] = true;
response['result'] = result;
response['msg'] = 'Result fetched';
res.json(response);
});
没有 add_key
打印答案 0 :(得分:0)
JSON数组数据类型不能在数组上包含命名键。
普通JavaScript数组旨在使用数字保存数据 索引。您可以将命名键填充到它们上(这可能很有用 当你想存储关于保持正常的数组的元数据时, 有序的,数字索引的数据),但这不是它们的本质 专为而设计。
如果需要命名键,请使用Object,而不是数组。
var test = {}; // Object
test['a'] = 'test';
test['b'] = []; // Array
test['b'].push('item');
test['b'].push('item2');
test['b'].push('item3');
var json = JSON.stringify(test);
alert(json);
答案 1 :(得分:0)
虽然Javascript数组可以具有自定义属性,例如您正在使用以下代码行:
result['add_key'] = 'abcdd';
JSON.stringify()
(因此res.json()
)也只会在生成的JSON中放入实际的数组元素(不是自定义属性)。因此,如果result
是一个数组,那么这个属性就不会在生成的JSON中显示。
实际上,JSON文本格式只能为数组的JSON格式提供数组元素。没有像['add_key
]属性这样的常规自定义属性的位置。该属性必须位于一个普通对象上才能在JSON中显示。
在描述数组的section 7 of the JSON specification中, 它清楚地表明数组的唯一JSON表示是 数组元素本身(以逗号分隔)。在数组的表达式中没有属性名称/值对的位置。
您没有准确显示您希望生成的JSON的样子,但是您可以通过其他几种方式来表示add_key
属性和值。您可以将属性移动到response
对象:
connection.modal.find( { 'id' : '2' }, function ( err, result ) {
var response = {};
response['add_key'] = 'abcdd';
response['success'] = true;
response['result'] = result;
response['msg'] = 'Result fetched';
res.json(response);
});
您可以将结果放入其自己的对象中,该对象可以包含add_key
属性:
connection.modal.find( { 'id' : '2' }, function ( err, result ) {
var response = {};
var resultContainer = {};
resultContainer['add_key'] = 'abcdd';
resultContainer['result'] = result;
response['success'] = true;
response['result'] = resultContainer;
response['msg'] = 'Result fetched';
res.json(response);
});
仅供参考,您不必通常使用括号语法来设置属性。你也可以这样做(许多人觉得有点干净):
connection.modal.find( { 'id' : '2' }, function ( err, result ) {
var response = {};
response.add_key = 'abcdd';
response.success = true;
response.result = result;
response.msg = 'Result fetched';
res.json(response);
});
您必须使用括号语法的唯一情况是,属性名称是字符串变量还是包含点语法中不允许的某些字符。对于常规字母字符和不在变量中的属性名称,您只需使用点语法。
答案 2 :(得分:0)
Nodejs没有命名索引数组(关联数组)
对于相同的Nodejs具有Object数据类型,请使用它
根据您的情况
if (date.getDayOfWeek() == DayOfWeek.FRIDAY)
System.out.println(date.toString() + " is Friday 13th");
我希望这会有所帮助