$scope.partsLinesTest = data[0].instock; // this is getting the JSOn data
from my http request
for(var i=0; $scope.partsLinesTest.length > 0; i++) {
//$scope.partsLinesTest = $scope.partsLinesTest[0].instock;
console.log($scope.partsLinesTest.replace(/['{[\]}']/g,''))
var str = $scope.partsLinesTest;
$scope.partsLinesStock = str.replace(/['{[\]}']/g,'');
}
Json数据的格式如下所示,由于额外的常规括号和花括号,我的问题是库存问题,这就是为什么我认为使用RegEX可以解决问题,但是我似乎无法正确地遍历数据和将其发布回视图,我也使用Angular
var test = [
{
"id": 1,
"title": "This is a document",
"desc": "PO",
"date": "2017-01-15",
"instock": "[{'branch': 'Edmonton', 'quantity': 2}]"
}
答案 0 :(得分:0)
有效的临时解决方案(不,更好的是临时解决方法 )将使用Javascript的eval()
函数(您应该从不在生产系统上执行此操作,因为它会打开安全漏洞!):
var test = [
{
"id": 1,
"title": "This is a document",
"desc": "PO",
"date": "2017-01-15",
"instock": "[{'branch': 'Edmonton', 'quantity': 2}]"
}]
console.log(eval(test[0].instock))
console.log(Array.isArray(eval(test[0].instock)))
@Quentin指出,正确的解决方案是使服务器发出正确格式的JSON(这需要用转义的双引号'
替换单引号\"
)。
请阅读强烈反对使用eval()
的原因:Why is using the JavaScript eval function a bad idea?
答案 1 :(得分:0)
如果它是JSON式的,则您将知道function HanussePick(rates,maxrate)
site = rand(1:N^2)
slider = rand() * maxrate
return(site,rates[site]-slider)
end
和,
会划分键和值。我将从清除所有其他字符并将其拆分为这些字符开始:
:
如果您认为自己的值中可能包含var jsonString = "[{'branch': 'Edmonton', 'quantity': 2}]"
var cleaned = jsonString.replace(/[^a-zA-Z0-9:,]/g,'')
//"branch:Edmonton,quantity:2"
var splitIntoKeyVal = cleaned.split(',').map(function(row){ return row.split(':')})
//[["branch","Edmonton"],["quantity],2]]
var json = {}
splitIntoKeyVal.forEach(function(row){
json[row[0]] = row[1]
})
或:
,则可能需要进行其他一些正则表达式欺骗。
答案 2 :(得分:-1)
为了获取数量,您必须解析data.instock
json。
var data = {
"id": 1,
"title": "This is a document",
"desc": "PO",
"date": "2017-01-15",
"instock": '[{"branch": "Edmonton", "quantity": 2}]'
};
var stock = JSON.parse(data.instock);
console.log(stock[0].quantity);
//$scope.partsLinesStock = stock[0].quantity;