2015-09-10 4 views
-4

У меня есть строка, как этотпреобразовать JSON в PHP/JavaScript

'abc=bbc|xyz=ijk|mno=def' 

отделенной трубы «|» символ и хотите, чтобы преобразовать его в JSON строку в PHP/JavaScript, как этот

{ "abc": "bbc", "xyz":"ijk", "mno":"def"} 

Я попытался Javascript заменить функцию, но не удалось. Есть идеи?

+0

Где вы хотите, чтобы преобразовать его? PHP или JS? – aldrin27

+0

Я предпочитаю PHP. Но javascript тоже не проблема. – laksys

+3

В javascript 'var obj = JSON.parse ('{' + 'abc = bbc | xyz = ijk | mno = def'.replace (/ (\ w +)/g,'" $ 1 "') заменить (/ =/g, ':'). replace (/ \ |/g, ',') + '}'); ' – Tushar

ответ

2

В PHP вы можете просто использовать array_walkexplode наряду с функцией и, наконец, с помощью json_encode в

$str = "abc=bbc|xyz=ijk|mno=def"; 
$arr = []; 
array_walk(explode('|',$str),function($v,$k)use(&$arr){ 
     $a = explode("=",$v); 
     $arr[$a[0]] = $a[1]; 
}); 
echo json_encode($arr);//{ "abc": "bbc", "xyz":"ijk", "mno":"def"} 

Demo

+0

Большое спасибо @Uchiha это сработало :) – laksys

+0

Приветствую вас, это вам помогло –

0

Рассмотрим сделать объект, и с помощью метода toJson().

http://www.w3schools.com/jsref/jsref_tojson.asp Будет предполагаю вы хотите JS

+0

Это должно быть комментарий. Не ответ. – aldrin27

+0

Это не конвертирует '' abc = bbc | xyz = ijk | mno = def'' в '{" abc ":" bbc "," xyz ":" ijk "," mno ":" def "}' –

1

В JavaScript вы можете сделать:

var input = 'abc=bbc|xyz=ijk|mno=def' 
 
, resultObj = {}; 
 
input 
 
    .split(/\|/g) 
 
    .map(
 
     function(keyValue){ 
 
      var parts = keyValue.split(/\=/g); 
 
      resultObj[parts[0]] = parts[1]; 
 
     } 
 
    ) 
 
; 
 
var results = '<table><tr><th>Key</th><th>Value</th></tr>'; 
 
$.each(resultObj 
 
    , function(k, v){ 
 
     results += '<tr><td>' + k + '&emsp;&emsp;</td><td>' + v + '</td></tr>'; 
 
    } 
 
); 
 
document.write(results + '</table>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Смежные вопросы