从JSON中删除连字符

时间:2014-09-02 14:37:45

标签: json string magento

我在OWEBIA Shipping 2.0中使用此JSON代码在我的magento商店中创建送货方式:

  

{“demo”:{“label”:“3diasúteis”,“条件”:   “({cart.price + tax + discount}> 59.89)&&({shipto.postcode}> 88000000)   &安培;&安培; ({shipto.postcode}< 88124999)“,”费用“:10,”customer_groups“:   “3”}}

它工作正常,但巴西邮政编码使用连字符! 它就像这个xxxxx-xxx 如何从用户在字段上插入的字符串中删除“ - ”? 非常感谢!

2 个答案:

答案 0 :(得分:1)

只要我记得Magento是基于PHP的,那么你首先需要这样做:

$response = json_decode($json_response); // this will convert the json object into php array;

然后为了避免删除所有超量(如果你在其他任何地方需要它们)搜索带有邮政编码的属性并执行此操作:

$postcode_without_hyphens = str_replace('-','', $response->post_code); //example

问候!如果您需要任何进一步的帮助或解释,请告诉我! :)

答案 1 :(得分:1)

为时已晚?

我有同样的问题。但是检查Owebia代码后,我找到了解决方案。

解决方案是添加一个验证器,以仅允许邮政编码中的数字:

文件:app / code / community / Owebia / Shipping2 / Model / ConfigParser.php第152行

更改此功能:

protected function _extract($data, $attributes)
{
    $extract = array();
    foreach ($attributes as $to => $from) {
        $extract[$to] = isset($data[$from]) ? $data[$from] : null;
    }
    return $extract;
}

对此:

protected function _extract($data, $attributes)
{
    $extract = array();
    foreach ($attributes as $to => $from) {
        // Here we validate the info, check if the current attribute is the postcode
        if($from == "dest_postcode"){
            //So we use preg_replace to allow only digits
            $data[$from] = preg_replace('/\D/', '', $data[$from]);
        }
        $extract[$to] = isset($data[$from]) ? $data[$from] : null;
    }
    return $extract;
}