2012-08-02 203 views
3

我試圖在特定格式JSON對象創建錯誤

{ "id": 12234 , "name": "Alex" , "gender": "Male"} 

// My code starts here 

var number = userid;   // alert(userid) is 12345 
var name= nameuser;   // alert(nameuser) is Alex 
var g= gender;     // alert(gender) is male 

var userObj = { "id": number , "name": name , "gender":g} 

我想`JSON.stringify(userObj)創建一個JSON對象; , 返回對象類型爲

{"id":"12345" , "name":"Alex" , "gender":"Male"} 

但這不是我想要的,我想要的號碼是12345,而不是「12345」。

還試圖字符串化的對象內的字段,如

{ "id": number , "name":JSON.stringify(name) ,gender: JSON.stringify(g)} 

但是當我做我的alert(userObj)對象類型是Object object,這是不是服務器識別的格式。 我相信有一個解決方法,但我無法找出一個

+1

但它似乎工作正常http://jsfiddle.net/XyJRW/ – thecodeparadox 2012-08-02 18:23:05

+2

你可以複製你的確切代碼?你提供的代碼有語法錯誤,除非'Alex'和'male'是變量。 – travis 2012-08-02 18:23:22

+0

我只是寫了這些作爲表示,分配給這些值是變量(與這些值,使用警報(名稱)等檢查)。 – alex 2012-08-02 18:33:36

回答

2

JSON專門用於字符串。除JSON中的字符串,數組或其他JSON對象外,其他任何內容都是無效的。也就是說,一個「數字」是不允許的;它需要是一個字符串。無論你以後如何使用JSON,都需要能夠將字符串更改爲數字(如有必要)。 JavaScript通常在強制這些方面做得很好。

在服務器端,你可以做這樣的事情

obj = json_decode(source) 
obj.id = (int)obj.id 
0

我認爲您的解決方案將下降到你想用JSON做的,而不是你希望如何被格式化的。

如果你在其他JavaScript代碼中使用它,那麼JSON.parse方法將在另一方面處理大部分問題(自動類型轉換處理其餘部分)。

如果您在服務器端使用它,PHP或類似的應用程序將適當地解碼對象。

如果它是服務器上更嚴格的語言,您只需記住哪些參數需要轉換爲布爾型或int/float。

0

您的問題的下面的代碼是有效的JSON。

{ "id": 12234 , "name": "Alex" , "gender": "Male"} 

我猜你的問題是你的userid變量是一個字符串,而不是數字。如果是這樣,嘗試

var number = parseInt(userid, 10); 

(10個參數表明您使用的基地10個數字,而不是像二進制或十六進制)。

0

將對象類型存儲爲屬性之一,並使用它來轉換所需的方式。