JSON对象创建错误

时间:2012-08-02 18:19:15

标签: javascript jquery

我正在尝试以特定格式创建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); ,  将对象类型返回为

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

但这不是我想要的,因为我希望数字是12345而不是“12345”。

还尝试对对象内的字段进行字符串化,如

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

但当我alert(userObj)时,我的对象类型为Object object,这不是服务器识别的格式。 我确信有一个解决方法,但我无法找到一个

4 个答案:

答案 0 :(得分:2)

JSON专门用于字符串。在JSON中包含除字符串,数组或其他JSON对象之外的任何内容都是无效的。也就是说,不允许使用“数字”;它需要是一个字符串。无论您使用JSON进行什么操作,都需要能够在必要时将字符串更改为数字。 JavaScript通常可以很好地强制执行这些操作。

在服务器端,您可以执行类似

的操作
obj = json_decode(source)
obj.id = (int)obj.id

答案 1 :(得分:0)

我认为您的解决方案将归结为您希望使用JSON进行的操作,而不是您希望如何格式化。

如果你在其他JavaScript代码中使用它,那么JSON.parse方法将在另一方面处理你的大部分问题(自动类型转换处理其余的)。

如果你在服务器端使用它,那么PHP或类似的将适当地解码对象。

如果它是您服务器上更严格的语言,那么您需要做的就是记住哪些参数需要转换为boolean或int / float。

答案 2 :(得分:0)

您问题的以下代码是有效的JSON。

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

我猜你遇到的问题是你的userid变量是一个字符串,而不是一个数字。如果是这样,请尝试

var number = parseInt(userid, 10);

(10参数表示您使用的是基数为10的数字,而不是二进制数或十六进制数。)

答案 3 :(得分:0)

将对象类型存储为属性之一,并使用它来转换所需的方式。

相关问题