2011-07-28 46 views
8
{ 
    "UpdateRequest": { 
     "SAASAS": { 
      "SPO2": "99.00000", 
      "VitalGroupID": "1219", 
      "Temperature": "36.6666666666667",    
     }, 
     "Modified": 1, 
     "ID": 25465 
    } 
} 

我怎样才能发送VitalGroupID和温度作为整数,而不是字符串....这是请求,形成后,我点击提交按钮。发送JSON响应作为字符串和整数...

+0

是不是总是作为字符串发送JSON?我认为您必须手动投射这种类型 –

+2

@das:JSON是一种文本记法,就像JavaScript源代码是文本记号一样。他说的是“VitalGroupID”:“1219”(它定义了一个* string *值为“1219”的属性),而不是“VitalGroupID”:1219'(它定义了* numeric *值的属性'1219')。 –

+0

感谢您的信息;) –

回答

2

严格地说,json是无类型的,所以你不能将它作为整数发送,它必须是一个字符串。 JavaScript对象有点不那么严格,所以你有他们将评估一个JavaScript对象,但没有严格的JSON解析器将能够理解它。

您可以做的最好的做法是使用parseInt将您知道的字段转换为客户端上的数字。

例如sonObj["UpdateRequest"]["SAASAS"]["VitalGroupID"] = parseInt(jsonObj["UpdateRequest"]["SAASAS"]["VitalGroupID"], 10);

+12

JSON是无类型的? JSON在字符串和数字之间不同,或者? (http://json.org/) – Biber

+1

看起来像ECMA-404标准确实在JSON中的字符串和数字之间有所区别:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA- 404.pdf –

0
new Number(jsonObject.UpdateRequest.SAASAS.VitalGroupID); 
10

您需要在单击按钮时显示创建请求的代码。基本上,如果你序列化的对象包含数字而不是字符串,那么生成的JSON将包含数字而不是字符串。所以问题是你正在序列化的对象有字符串。

但举例来说,如果你从HTML输入域或类似的,例如:

UpdateRequest.SAASAS.VitalGroupID = someInputElement.value; 

让这些价值观...... value总是的字符串。你需要分析它:

UpdateRequest.SAASAS.VitalGroupID = parseInt(someInputElement.value, 10); 

需要注意的是,最好使用parseInt,并给它的基数(数量的基础上,一般为10),否则您遇到的问题与写为“08”的数字和类似。

0

如果你想在客户端处理它(正如你所提到的JSON,JAvascript)。在解析JSON对象后,可以执行以下操作。 parseInt(UpdateRequest.SAASAS.VitalGroupID,10)UpdateRequest.SAASAS.VitalGroupID*1对于“温度”变量也采用相同的值。

1

JSON支持数字作为值。所以:

var r = { 
    "UpdateRequest": { 
     "SAASAS": { 
      "SPO2": "99.00000", 
      "VitalGroupID": "1219", 
      "Temperature": "36.6666666666667",    
     }, 
     "Modified": 1, 
     "ID": 25465 
    } 
} 
r.UpdateRequest.SAASAS.VitalGroupID = +r.UpdateRequest.SAASAS.VitalGroupID