将OData转换为JSON

时间:2015-03-09 18:52:15

标签: javascript json deserialization odata

回应

< 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; }    

    }

我怎样才能做到这一点?

2 个答案:

答案 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);