为什么我从这个 JSON 对象中得到 'undefined'?
Why am i getting 'undefined' from this JSON object?
var action=component.get("c.callCostCatalog");
action.setParams({ wrapperStructure:JSON.stringify(component.get("v.listStructurePV")),
consumoTotal:component.get("v.consumTotal"),
Rate:'Vacia',
orderItemID: component.get("v.recordId"),
PMPInicial:component.get("v.precioInicial")})
action.setCallback(this,function(response){
//var listWrapper = JSON.parse(response.getReturnValue()); -> log shows [object object]
var listWrapper = JSON.parse(JSON.stringify(response.getReturnValue()));
//listWrapper.usedBand returns undefined
})
callCostCatalog
是一种 Apex 方法,其中 returns 字符串:
{"usedBand":0.0,"PMPObjetivo":0.0,"PMPNegotiated":0.028533,"PMPInit":0.028533,"negotiationBands":null,"Negotiation":0.0,"negBandCI":null,"minBandSD":null,"minBandRZ":null,"minBandRT":null,"minBandD":null,"minBand":null,"maxBandSD":null,"maxBandRZ":null,"maxBandRT":null,"maxBandD":null,"maxBand":null,"lNegotiatedPrices":[80.97],"lInitPrices":[0.028533],"lImplicitPrice":[],"lConsums":[]}
你的JSON.parse
是对的,你的console.log
是对的,你的JSON是对的
但是,您错误地调用了 JSON.stringify
,这类似于 parse
的反向操作,获取一个 JavaScript 对象并生成一个字符串 JSON。你不想要那个;你已经有了 JSON 的字符串。只需将其删除。
var aux = '{"usedBand":0.0,"PMPObjetivo":0.0,"PMPNegotiated":0.028533,"PMPInit":0.028533,"negotiationBands":null,"Negotiation":0.0,"negBandCI":null,"minBandSD":null,"minBandRZ":null,"minBandRT":null,"minBandD":null,"minBand":null,"maxBandSD":null,"maxBandRZ":null,"maxBandRT":null,"maxBandD":null,"maxBand":null,"lNegotiatedPrices":[80.97],"lInitPrices":[0.028533],"lImplicitPrice":[],"lConsums":[]}';
它开始是代表一个对象的 JSON 字符串。
JSON.stringify(aux)
然后你把它变成一个JSON的字符串(表示一个JSON的字符串代表一个对象)。
JSON.parse(...);
然后你解析它,它给你返回 JSON 的原始字符串。
字符串没有 usedBand
属性。
您需要先解析您的原始 JSON 而不 将其 转换为 嵌套 JSON。
var aux = '{"usedBand":0.0,"PMPObjetivo":0.0,"PMPNegotiated":0.028533,"PMPInit":0.028533,"negotiationBands":null,"Negotiation":0.0,"negBandCI":null,"minBandSD":null,"minBandRZ":null,"minBandRT":null,"minBandD":null,"minBand":null,"maxBandSD":null,"maxBandRZ":null,"maxBandRT":null,"maxBandD":null,"maxBand":null,"lNegotiatedPrices":[80.97],"lInitPrices":[0.028533],"lImplicitPrice":[],"lConsums":[]}';
var aux2 = JSON.parse(aux);
console.log(aux2.usedBand);
var action=component.get("c.callCostCatalog");
action.setParams({ wrapperStructure:JSON.stringify(component.get("v.listStructurePV")),
consumoTotal:component.get("v.consumTotal"),
Rate:'Vacia',
orderItemID: component.get("v.recordId"),
PMPInicial:component.get("v.precioInicial")})
action.setCallback(this,function(response){
//var listWrapper = JSON.parse(response.getReturnValue()); -> log shows [object object]
var listWrapper = JSON.parse(JSON.stringify(response.getReturnValue()));
//listWrapper.usedBand returns undefined
})
callCostCatalog
是一种 Apex 方法,其中 returns 字符串:
{"usedBand":0.0,"PMPObjetivo":0.0,"PMPNegotiated":0.028533,"PMPInit":0.028533,"negotiationBands":null,"Negotiation":0.0,"negBandCI":null,"minBandSD":null,"minBandRZ":null,"minBandRT":null,"minBandD":null,"minBand":null,"maxBandSD":null,"maxBandRZ":null,"maxBandRT":null,"maxBandD":null,"maxBand":null,"lNegotiatedPrices":[80.97],"lInitPrices":[0.028533],"lImplicitPrice":[],"lConsums":[]}
你的JSON.parse
是对的,你的console.log
是对的,你的JSON是对的
但是,您错误地调用了 JSON.stringify
,这类似于 parse
的反向操作,获取一个 JavaScript 对象并生成一个字符串 JSON。你不想要那个;你已经有了 JSON 的字符串。只需将其删除。
var aux = '{"usedBand":0.0,"PMPObjetivo":0.0,"PMPNegotiated":0.028533,"PMPInit":0.028533,"negotiationBands":null,"Negotiation":0.0,"negBandCI":null,"minBandSD":null,"minBandRZ":null,"minBandRT":null,"minBandD":null,"minBand":null,"maxBandSD":null,"maxBandRZ":null,"maxBandRT":null,"maxBandD":null,"maxBand":null,"lNegotiatedPrices":[80.97],"lInitPrices":[0.028533],"lImplicitPrice":[],"lConsums":[]}';
它开始是代表一个对象的 JSON 字符串。
JSON.stringify(aux)
然后你把它变成一个JSON的字符串(表示一个JSON的字符串代表一个对象)。
JSON.parse(...);
然后你解析它,它给你返回 JSON 的原始字符串。
字符串没有 usedBand
属性。
您需要先解析您的原始 JSON 而不 将其 转换为 嵌套 JSON。
var aux = '{"usedBand":0.0,"PMPObjetivo":0.0,"PMPNegotiated":0.028533,"PMPInit":0.028533,"negotiationBands":null,"Negotiation":0.0,"negBandCI":null,"minBandSD":null,"minBandRZ":null,"minBandRT":null,"minBandD":null,"minBand":null,"maxBandSD":null,"maxBandRZ":null,"maxBandRT":null,"maxBandD":null,"maxBand":null,"lNegotiatedPrices":[80.97],"lInitPrices":[0.028533],"lImplicitPrice":[],"lConsums":[]}';
var aux2 = JSON.parse(aux);
console.log(aux2.usedBand);