2016-11-17 64 views
0

我試圖解析美元JSON.parse錯誤字符串"{$Duration:1200,$Opacity:2}"到對象在關鍵

var tr = "{$Duration:1200,$Opacity:2}"; 
JSON.parse(tr); 

與例外

Unexpected token $ in JSON at position 1. 

,我應該如何處理這種情況的任何指針失敗?

+0

他們之間應該'「'的 –

+1

這不是一個有效的JSON – Weedoze

+0

你從哪裏得到這個‘來自哪裏? – Bergi

回答

1

將它們包裝成""。這是一個JSON syntax,將每個鍵和值包含在""中。您可以將數字和布爾值置於""之間。

var str = JSON.parse('{"$Duration":"1200","$Opacity":"2"}'); 
 
console.log(str);

+4

'1200'和'2'不需要引用,它們將被解析爲數字 – SuperSaiyan

+0

是的,你是對的 –

+0

字符串是輸入。 dify字符串如上所述 – pankajt

0

你應該附上鍵/道具與"'單引號也不起作用。如果你能控制生成字符串。修改如下。如果沒有,你應該考慮使用REGEX。

var a = JSON.parse('{"$Duration":1200,"$Opacity":2}'); 
 
console.log(a);

如果鍵名是固定的,你可以簡單地取代它們的字符串中。而且,最終得到一個有效的JSON:

var str  = "{$Duration:1200,$Opacity:2}", 
 
    validStr = str.replace(/((\$[a-zA-Z0-9]*)(?:\:))/g, '"$2":'), 
 
    j  = JSON.parse(validStr); 
 
console.log(j);

+0

的字符串是輸入。有沒有簡單的方法來修改上面提到的字符串 – pankajt

+0

@ pankajt,密鑰是否修復?如果是這樣,是的,我可以提供一個workaroun –

+0

我沒有一個妥善的解決辦法還沒有 – pankajt

1

對象鍵和字符串需要在JSON雙引號內。

試試這個。

JSON.parse('{ "$Duration": 1200, "$Opacity": 2 }'); 
0

或者你可以簡單JSON.stringify(),然後JSON.parse()無需添加anywhere.Run下面的代碼片段額外的引號。

var app = angular.module('app', []); 
 
app.controller('Ctrl', function($scope) { 
 

 
    var str = JSON.stringify({$Duration:1200,$Opacity:2}); 
 
    $scope.list = JSON.parse(str); 
 
    console.log(JSON.parse(str)); 
 

 
});
<script data-require="[email protected]" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script> 
 

 
<div ng-app="app" ng-controller="Ctrl"> 
 
    
 
    {{list}} 
 
    <p>{{list.$Duration}} - {{list.$Opacity}}</p> 
 
    </div>

+1

行的最後一位沒有給我一個JSON對象 –

+0

我想是這樣的,但不是爲我工作。 – pankajt