Javascript 以json格式格式化返回的表数据
我对javascript相当陌生。我从sql server数据库检索数据,如下所示:Javascript 以json格式格式化返回的表数据,javascript,json,Javascript,Json,我对javascript相当陌生。我从sql server数据库检索数据,如下所示: [Object { shortcode="0013A2004031AC9A", latest_measurement=1067, keyid="6801"}, Object { shortcode="0013A2004031AC9A", latest_measurement=7, keyid="6802"}, Object { shortcode="0013A2004031AC9A", latest_m
[Object { shortcode="0013A2004031AC9A", latest_measurement=1067, keyid="6801"},
Object { shortcode="0013A2004031AC9A", latest_measurement=7, keyid="6802"},
Object { shortcode="0013A2004031AC9A", latest_measurement=8598838, keyid="6803"}]
{mac : 0013A2004031AC9A, keys : {6801:1067, 6802:7, 6803:8598838}}
我想将其格式化为json格式,如下所示:
[Object { shortcode="0013A2004031AC9A", latest_measurement=1067, keyid="6801"},
Object { shortcode="0013A2004031AC9A", latest_measurement=7, keyid="6802"},
Object { shortcode="0013A2004031AC9A", latest_measurement=8598838, keyid="6803"}]
{mac : 0013A2004031AC9A, keys : {6801:1067, 6802:7, 6803:8598838}}
但我就是不明白
我有
var jsonDataPerMac = {};
我在上面的json对象上循环,对于我发现的每一个新mac,我都这样做:
jsonDataPerMac[i]={"mac": device.shortcode, "keys":[]};
但是我怎么才能填好钥匙呢?
如有任何提示,将不胜感激。请在此处输入代码
您需要先合并这些条目
var reducedData = {};
$.each(macs, function(index,macitem){
if (reducedData.hasOwnProperty(macitem.shortcode)) {
reducedData[macitem.shortcode].push(macitem.key);
} else {
reducedData[macitem.shortcode] = [ macitem.key ];
}
});
然后在数组中映射到所需的格式
var jsonDataPerMac = [],
i = 0;
$.map(reducedData, function(keys,mac){
jsonDataPerMac[i++] = {"mac": mac, "keys": keys};
// your other code goes here
});
另外,您对jsonDataPerMac的使用表明您希望它是一个数组。以下是我的建议。我宁愿避免使用jQuery来执行如此简单的操作。在这个特定的示例中,我们在循环中使用forEach和for 您可以将上述代码转换为函数,然后在ajax onSuccess方法中重用它。记住将数组作为参数传递,并返回newArray JSFiddle:
谢谢,这正是我想要的。我非常感谢您的帮助。欢迎您:您可以随时将我的回答标记为有帮助,这将是对我的一点奖励。毕竟这并不完全是我想要做的,但在我的示例中可能不清楚:{mac:0013A2004031AC9A,key:{6801:10676802:76803:8598838}6801,6082和6803必须是密钥和mac之类的标识符。我想处理newArray.keys.6801,以便能够在不同的键值之间进行计算和比较。如果您需要任何帮助,请在此处留下评论,我们将尝试修改此代码,使其完全适合您。如果您能给我一个提示,那将非常棒。谢谢。