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); ,返回对象类型为

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

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

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

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

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

4

4 回答 4

2

JSON 仅适用于字符串。JSON 中除了字符串、数组或其他 JSON 对象之外的任何内容都是无效的。也就是说,不允许使用“数字”;它必须是一个字符串。如有必要,您以后使用 JSON 的任何内容都需要能够将字符串更改回数字。JavaScript 通常在强制这些方面做得很好。

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

obj = json_decode(source)
obj.id = (int)obj.id
于 2012-08-02T18:22:45.697 回答
0

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

于 2012-08-02T19:10:20.217 回答
0

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

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

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

var number = parseInt(userid, 10);

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

于 2012-08-02T19:02:06.857 回答
0

我认为你的解决方案将归结为你想用 JSON 做什么,而不是你希望它的格式。

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

如果您在服务器端使用它,PHP 或类似的工具会适当地解码对象。

如果它在您的服务器上是一种更严格的语言,您需要做的就是记住哪些参数需要转换为布尔值或 int/float。

于 2012-08-02T18:54:37.503 回答