我正在尝试以特定格式创建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
,这不是服务器识别的格式。
我确信有一个解决方法,但我无法找到一个
答案 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)
将对象类型存储为属性之一,并使用它来转换所需的方式。