1

我正在尝试解析从 WCF 服务传递的 JSON 对象,这是服务提供的响应

[
 {
   "Caption": "Hello",
   "CityState": "Seattle",
   "URL": "Test"
 },
 {
   "Caption": "World",
   "CityState": "Chicago",
   "URL": "Test"
 },
 {
    "Caption": "Hello",
    "CityState": "New York",
    "URL": "Test"
 }
]

这是创建对象的 WCF 代码

///Custom Object has 3 string properties
List<OW_CompanyACSearch> search = new List<OW_CompanyACSearch>();

  DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<OW_CompanyACSearch>));
        using (MemoryStream stream = new MemoryStream())
        {
            serializer.WriteObject(stream, search);
            return Encoding.Default.GetString(stream.ToArray());
        }

这是我想要工作的 JQuery

    source: function (request, response) {
            j$.ajax({
                url:"testservice.svc",
                dataType: "json",
                data: {
                    Search: request.term
                },
                success: function (data) {

                    response(j$.map(data, function (item) {
                        return {
                            label: item.Caption,
                            value: item.Caption,
                            URL: item.URL,
                            CityState: item.CityState
                        }

                    }));
                }
            });
        }

我遇到的问题是,当我返回解析对象上的成员时,没有定义任何属性。如果我深入研究对象,似乎它将对象视为一个长字符串,因此 index[0] 将是“[”等等。

我已经阅读了所有内容,并且尝试了所有我看到的选项,但我仍然遇到这个问题。我不确定我是否在序列化或解析不正确,但我们将不胜感激。

另外,不确定是否重要,但 WCF 上的绑定是 webHttpBinding

4

2 回答 2

1

哇,这太棒了,发现 data 只是 JSON 对象的包装,并且有一个名为“d”的属性是实际对象。

所以这

 data = j$.parseJSON(data.d);

用对象填充数据,我可以继续前进。

于 2013-06-07T21:09:27.380 回答
0

data对象应该已经是一个变量数组,其中包含 JSON 命名的属性中的数据。你应该能够做这样的事情:

source: function (request, response) {
        j$.ajax({
            url:"testservice.svc",
            dataType: "json",
            data: {
                Search: request.term
            },
            success: function (data) {
                alert(data[0].Caption);
            }
        });
    }

验证对象结构。

于 2013-06-07T20:09:09.763 回答