回应
< script >
$(document).ready(function() {
$.ajax({
url: "http://localhost:37994/odata/EPStructures3/",
type: "Get",
contentType: 'application/json; odata=nometadata; charset=utf-8',
success: function(data)
{
var arr_from_json = JSON.parse(data);
//do something.....
},
error: function(msg)
{
alert(msg);
}
});
});
< /script>
我收到以下JSON
{"value":[{"eps_level":0,"id":2},{"eps_level":1,"id":3}]}
我想将它转换为this(尝试使用JSON.parse(数据)),但它无法正常工作
[{"eps_level":0,"id":2},{"eps_level":1,"id":3}]
我的班级
[Table("EPStructure")]
public partial class EPStructure
{
public byte eps_level { get; set; }
[Key]
[Column("eps_id")]
public int id { get; set; }
}
我怎样才能做到这一点?
答案 0 :(得分:2)
返回的数据采用JSON格式。所以它实际上是一个JavaScript对象( J ava S cript O bject N otation)。您想要删除包含带有对象的数组的对象。
请执行以下操作:
var arr_from_json = JSON.parse(data).value; //parse it into a JavaScript Object, call its property value. This will return an array
将其解析为JavaScript是正确的。从那时起,您可以正常处理对象并从中检索属性。在这种情况下,数组存储在value
属性中。
工作示例:
var data = '{"value":[{"eps_level":0,"id":2},{"eps_level":1,"id":3}]}'; //this line represents the object returned from the ajax call;
var arr_from_json = JSON.parse(data).value;
//you can access eps_level by doing this: arr_from_json[0].eps_level
document.body.innerHTML += JSON.stringify(arr_from_json);// for demo purposes. This line is not part of the solution.
正如Joe Enos评论的那样:如果你在这里使用jQuery功能dataType
,你可以跳过JSON.parse
步骤,因为data
将包含已解析的JSON。
答案 1 :(得分:1)
感谢所有帮助我找到问题答案的人。
我通过替换
解决了这个问题var arr_from_json = JSON.parse(data);
与
var arr_from_json = JSON.stringify(data.value);