JSON If 语句
JSON If Statement
我从第 3 方收到 JSON,需要有条件地解析数量...根据行项目的使用类型,"ReplacementCount" 或 "ServiceCount" 将需要变成"quantity",删除或忽略另一个。没有任何情况 'lineitemfieldname' 都会 > 0,它总是一个或另一个。
我正在进入我的第一个 if 语句,但从未进入第二个......我很确定我正在错误地处理 JSON object/value 的 if 语句,但我不确定如何解决。
这是我的示例 JSON:
{"recordtype":"salesorder","item":
[{"InventoryManagementKey":"20001","InvoiceDay":"9/10/2015","ReplacementAmount":0.0000,"ReplacementCount":500,"ServiceAmount":0.0000,"ServiceCount":0}]}
这是处理 JSON:
的服务器端脚本片段
for(var lineitemfieldname in lineitemobject)
{
var lineitemfieldvalue = lineitemobject[lineitemfieldname];
if(lineitemfieldname == 'ServiceCount' && lineitemfieldvalue != 0)
{
if(lineitemfieldname == 'InventoryManagementKey')
{
lineitemfieldname = 'item';
}
if(lineitemfieldname == 'ServiceCount')
{
lineitemfieldname = 'quantity';
}
delete 'ServiceAmount';
delete 'ReplacementAmount';
delete 'ReplacementCount';
delete 'invoiceDay';
record.setCurrentLineItemValue('item',lineitemfieldname,lineitemfieldvalue);
}
}
这将根据 "ReplacementAmount"
更新您的 json
var lineitemobject = JSON.parse('{"recordtype":"salesorder","item":[{"InventoryManagementKey":"20001","InvoiceDay":"9/10/2015","ReplacementAmount":0.0000,"ReplacementCount":500,"ServiceAmount":0.0000,"ServiceCount":0}]}');
if(lineitemobject.item[0]['ReplacementAmount'] > 0) {
lineitemobject.item[0]['quantity'] = lineitemobject.item[0]['ReplacementAmount'];
delete lineitemobject.item[0]['ReplacementAmount'];
} else {
lineitemobject.item[0]['quantity'] = lineitemobject.item[0]['ServiceCount'];
delete lineitemobject.item[0]['ServiceCount'];
}
这里只有 lineitemobject JavaScript 对象值发生变化,JSON 字符串没有变化。
感谢 rajuGT 的指导,我得以解决这个问题。对于偶然发现此问题的任何人,这里是我的决议摘要:
var currentValue = 0; //Global
for (var itemobject in value){
record.selectNewLineItem('item');
var lineitemobject = value[itemobject];
for(var lineitemfieldname in lineitemobject){
var lineitemfieldvalue = lineitemobject[lineitemfieldname];
if(lineitemfieldname == 'ReplacementCount'){
if(lineitemfieldvalue != 0){
lineitemfieldname = 'quantity';
currentValue = lineitemfieldvalue;
}
delete 'ServiceCount';
}
else if (lineitemfieldname == 'ServiceCount'){
if(lineitemfieldvalue != 0){
lineitemfieldname = 'quantity';
currentValue = lineitemfieldvalue;
}
delete 'ReplacementCount';
}
if(lineitemfieldname == 'InventoryManagementKey'){
lineitemfieldname = 'item';
}
record.setCurrentLineItemValue('item',lineitemfieldname,lineitemfieldvalue);
record.setCurrentLineItemValue('item','price','9')
}
record.commitLineItem('item');
}
正在验证 JSON Schema Draft-07,JSON 现在支持条件数据表示的 if...then...else
关键字。
{
"type": "integer",
"minimum": 1,
"maximum": 1000,
"if": { "minimum": 100 },
"then": { "multipleOf": 100 },
"else": {
"if": { "minimum": 10 },
"then": { "multipleOf": 10 }
}
}
我从第 3 方收到 JSON,需要有条件地解析数量...根据行项目的使用类型,"ReplacementCount" 或 "ServiceCount" 将需要变成"quantity",删除或忽略另一个。没有任何情况 'lineitemfieldname' 都会 > 0,它总是一个或另一个。
我正在进入我的第一个 if 语句,但从未进入第二个......我很确定我正在错误地处理 JSON object/value 的 if 语句,但我不确定如何解决。
这是我的示例 JSON:
{"recordtype":"salesorder","item":
[{"InventoryManagementKey":"20001","InvoiceDay":"9/10/2015","ReplacementAmount":0.0000,"ReplacementCount":500,"ServiceAmount":0.0000,"ServiceCount":0}]}
这是处理 JSON:
的服务器端脚本片段 for(var lineitemfieldname in lineitemobject)
{
var lineitemfieldvalue = lineitemobject[lineitemfieldname];
if(lineitemfieldname == 'ServiceCount' && lineitemfieldvalue != 0)
{
if(lineitemfieldname == 'InventoryManagementKey')
{
lineitemfieldname = 'item';
}
if(lineitemfieldname == 'ServiceCount')
{
lineitemfieldname = 'quantity';
}
delete 'ServiceAmount';
delete 'ReplacementAmount';
delete 'ReplacementCount';
delete 'invoiceDay';
record.setCurrentLineItemValue('item',lineitemfieldname,lineitemfieldvalue);
}
}
这将根据 "ReplacementAmount"
更新您的 jsonvar lineitemobject = JSON.parse('{"recordtype":"salesorder","item":[{"InventoryManagementKey":"20001","InvoiceDay":"9/10/2015","ReplacementAmount":0.0000,"ReplacementCount":500,"ServiceAmount":0.0000,"ServiceCount":0}]}');
if(lineitemobject.item[0]['ReplacementAmount'] > 0) {
lineitemobject.item[0]['quantity'] = lineitemobject.item[0]['ReplacementAmount'];
delete lineitemobject.item[0]['ReplacementAmount'];
} else {
lineitemobject.item[0]['quantity'] = lineitemobject.item[0]['ServiceCount'];
delete lineitemobject.item[0]['ServiceCount'];
}
这里只有 lineitemobject JavaScript 对象值发生变化,JSON 字符串没有变化。
感谢 rajuGT 的指导,我得以解决这个问题。对于偶然发现此问题的任何人,这里是我的决议摘要:
var currentValue = 0; //Global
for (var itemobject in value){
record.selectNewLineItem('item');
var lineitemobject = value[itemobject];
for(var lineitemfieldname in lineitemobject){
var lineitemfieldvalue = lineitemobject[lineitemfieldname];
if(lineitemfieldname == 'ReplacementCount'){
if(lineitemfieldvalue != 0){
lineitemfieldname = 'quantity';
currentValue = lineitemfieldvalue;
}
delete 'ServiceCount';
}
else if (lineitemfieldname == 'ServiceCount'){
if(lineitemfieldvalue != 0){
lineitemfieldname = 'quantity';
currentValue = lineitemfieldvalue;
}
delete 'ReplacementCount';
}
if(lineitemfieldname == 'InventoryManagementKey'){
lineitemfieldname = 'item';
}
record.setCurrentLineItemValue('item',lineitemfieldname,lineitemfieldvalue);
record.setCurrentLineItemValue('item','price','9')
}
record.commitLineItem('item');
}
正在验证 JSON Schema Draft-07,JSON 现在支持条件数据表示的 if...then...else
关键字。
{
"type": "integer",
"minimum": 1,
"maximum": 1000,
"if": { "minimum": 100 },
"then": { "multipleOf": 100 },
"else": {
"if": { "minimum": 10 },
"then": { "multipleOf": 10 }
}
}