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
                        }

                    }));
                }
            });
        }

私が抱えている問題は、オブジェクトのメンバーを解析するために戻りに陥ったときに、プロパティが定義されていないことです。オブジェクトにドリルダウンすると、オブジェクトを 1 つの長い文字列として扱っているように見えるため、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 に答える