JSON If Statement

问题描述 投票:0回答:3

我从第三方收到JSON,需要有条件地解析数量......根据订单项的使用类型,“ReplacementCount”或“ServiceCount”将需要变为“quantity”,并删除或忽略其他。这两个'lineitemfieldname'都不是> 0的情况,它总是一个或另一个。

我正在使用它的第一个if语句,但从不进入第二个...我很确定我正在为JSON对象/值处理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);
                                }
}
javascript json rest netsuite suitescript
3个回答
1
投票

这将根据“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字符串。


0
投票

由于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');
}

0
投票

验证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 }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.