Javascript 对象数组的JSON.parse
服务器返回JSON格式的对象数组。看起来是这样的:Javascript 对象数组的JSON.parse,javascript,json,Javascript,Json,服务器返回JSON格式的对象数组。看起来是这样的: {"d":"[ {\"Id\":1,\"IsGood\":true,\"name1\":\"name1dsres\",\"Name2\":\"name2fdsfd\",\"name3\": \"name3fdsgfd\",\"wasBorn\":\"\\/Date(284011000000)\\/\"}, {\"Id\":2,\"IsGood\":false,\"name1\":\"fdsfds\",\"name2\":\"gfd3i
{"d":"[
{\"Id\":1,\"IsGood\":true,\"name1\":\"name1dsres\",\"Name2\":\"name2fdsfd\",\"name3\": \"name3fdsgfd\",\"wasBorn\":\"\\/Date(284011000000)\\/\"},
{\"Id\":2,\"IsGood\":false,\"name1\":\"fdsfds\",\"name2\":\"gfd3im543\",\"name3\":\"3543gfdgfd\",\"WasBorned\":\"\\/Date(281486800000)\\/\"}
]"}
我需要使用JSON.parse函数进行解析。我是这样做的:
function myFunction(dataFromServer){
var parsedJSON = JSON.parse(dataFromServer.d);
for (var item in parsedJSON.d) {
// how do I get the fields of current item?
}
此代码不工作,它返回未定义的
for (var item in parsedJSON) {
alert(item.Id);
}
您可以像访问任何对象一样访问它们:
var id = item.Id;
if (item.IsGood) { ... }
如果您希望枚举它们以某种方式使用,请查看。您可以像访问普通javascript对象一样访问它们, 这可以作为
item.id
或item['id']
这非常有效
function myFunction(dataFromServer){
var parsedJSON = JSON.parse(dataFromServer.d);
for (var i=0;i<parsedJSON.length;i++) {
alert(parsedJSON[i].Id);
}
}
类程序
{
静态void Main(字符串[]参数)
{
var jsonString=@“{
“数据”:[
{
“uid”:“100001648098091”,
“名字”:“帕亚尔”,
“姓氏”:“辛哈”,
“性别”:“女性”,
“带徽标的大照片”:https://m.ak.fbcdn.net/external.ak/safe_image.php?d=AQAi8VLrTMB-UUEs&bust=1&url=https%3A%2F%2Fscontent-a.xx.fbcdn.net%2phprofile-ash2%2Fv%2Ft1.0-1%2Fs200x200%2fs10018_4339880266130_85247169_n.jpg%3Foh%3dc2774db94dff4dc9f193070c9715ef65%26oe%3D552CF366&logo&v=5&w=200&h=150“,
“用户名”:“payal.sinha.505”,
},
]
}";
动态userinfo=JValue.Parse(jsonString);
IList userDeatils=新列表();
//第一种方法
foreach(userinfo.data中的动态userinfoItr)
{
FacebookUserDetail userdetail=userinfoItr.ToObject();
userDeatils.Add(userdetail);
}
//第二种方法
var userDeatils1=JsonConvert.DeserializeObject(jsonString);
}
}
公共类FacebookUserDetail
{
公共字符串用户名{get;set;}
//Password=EncryptionClass.Md5Hash(Guid.NewGuid().ToString()),
公共字符串first_name{get;set;}
公共字符串last_name{get;set;}
公共字符串sex{get;set;}
公共字符串pic_big_与_log{get;set;}
}
在这里输入代码
公共类FacebookUserDetails
{
公共IList数据{get;set;}
}
}
假设dataFromServer
包含您发布的数据,并且您已经对其进行了解析,那么parsedJSON
已经是一个数组,它没有属性d
。如果您想知道如何访问对象的属性,请查看有关更新的信息:这不是迭代数组的方式。请查看以下链接以了解中…的:。使用normalfor
循环在数组中迭代。在循环中(应该是normal for循环,而不是每个循环),在您编写问题的地方,您获取对象,然后使用点符号或像地图一样访问它。但正如@Rab Nawas所注意到的,d的值不是数组,而是数组的字符串。这意味着您必须在访问数组中的元素之前将其解析为JSON对象,而不应该这样做。for-in
构造用于迭代对象属性,而不是数组元素(就像在PHP或Python中所做的那样)。JS需要一个增量for循环来迭代数组。for(数组中的索引){var value=array[index];}
function myFunction(dataFromServer){
var parsedJSON = JSON.parse(dataFromServer.d);
for (var item in parsedJSON) {
alert(item.Id);
}
}
class Program
{
static void Main(string[] args)
{
var jsonString = @"{
""data"": [
{
""uid"": ""100001648098091"",
""first_name"": ""Payal"",
""last_name"": ""Sinha"",
""sex"": ""female"",
""pic_big_with_logo"": ""https://m.ak.fbcdn.net/external.ak/safe_image.php?d=AQAi8VLrTMB-UUEs&bust=1&url=https%3A%2F%2Fscontent-a.xx.fbcdn.net%2Fhprofile-ash2%2Fv%2Ft1.0-1%2Fs200x200%2F10018_433988026666130_85247169_n.jpg%3Foh%3Dc2774db94dff4dc9f393070c9715ef65%26oe%3D552CF366&logo&v=5&w=200&h=150"",
""username"": ""payal.sinha.505"",
},
]
}";
dynamic userinfo = JValue.Parse(jsonString);
IList<FacebookUserDetail> userDeatils = new List<FacebookUserDetail>();
// 1st method
foreach (dynamic userinfoItr in userinfo.data)
{
FacebookUserDetail userdetail= userinfoItr.ToObject<FacebookUserDetail>();
userDeatils.Add(userdetail);
}
// 2nd Method
var userDeatils1 = JsonConvert.DeserializeObject<FacebookUserDetails>(jsonString);
}
}
public class FacebookUserDetail
{
public string username { get; set; }
//Password = EncryptionClass.Md5Hash(Guid.NewGuid().ToString()),
public string first_name { get; set; }
public string last_name { get; set; }
public string sex { get; set; }
public string pic_big_with_log { get; set; }
}
enter code here
public class FacebookUserDetails
{
public IList<FacebookUserDetail> data { get; set; }
}
}