我试图从我的服务器返回一个字符串,该字符串将被解析为一个javascript对象。在解析过程中,我不断收到错误。我不知道为什么。也许你知道我不知道的事情。
我的字符串如下所示:
{{"fname":"bob","lname":"jones"},{...}}
我想做的事情就像是
var item = JSON.parse(myString);
它应该是制作项目,一个名字数组,所以我可以做类似的事情:
for(var i = 0; i < item.length; i++){
alert(item[i].fname + " " + item[i].lname);
}
我有什么问题吗?以上是一个示例,但下面实际上是代码片段:
while (reader.Read())
{
if (reader["rt_id"] != DBNull.Value && reader["rt_name"] != DBNull.Value)
{
t = @"{""pValue"":""{ReportType},"+reader["rt_id"]+@""",""pText"":"""+reader["rt_name"]+@"""}";
returnContentsArray.Add(t);
}
}
returnContents = "{" + String.Join(",",returnContentsArray.ToArray()) + "}";
return returnContents;
在客户端:
var item = JSON.parse(result);
答案 0 :(得分:1)
该字符串无效JSON。 {}
表示一个需要有密钥的对象。您似乎想要一个数组,而是使用[]
。
returnContents = "[" + String.Join(",",returnContentsArray.ToArray()) + "]";
答案 1 :(得分:1)
您需要使用正确的JSON格式。看起来你应该使用的格式是
[{"fname":"bob","lname":"jones"},{...}]
哪个会返回一个对象数组。只需让用户在尝试更改javascript代码之前就可以在类似的JSONLint中验证JSON。