C# 作为单个字符数组读取的JSON数据

C# 作为单个字符数组读取的JSON数据,c#,angularjs,asp.net-web-api,C#,Angularjs,Asp.net Web Api,我有点小问题,希望有人碰到了,知道发生了什么 我正在调用我们的WebAPI来获取$resource的数据 angularJS控制器代码 Controller.service.common.GetData.get({pubPolyData: objData}, function (Response) { // success Do stuff... } AngularJS服务 GetData: $re

我有点小问题,希望有人碰到了,知道发生了什么

我正在调用我们的WebAPI来获取$resource的数据

angularJS控制器代码

 Controller.service.common.GetData.get({pubPolyData: objData}, function 
 (Response) {
                // success 
               Do stuff...

            }
AngularJS服务

GetData: $resource(myURL, {}),
通过APIController,这是一个字符串类型的c可继承对象

我正在使用System.Net.WebClient;调用response=client.DownloadStringtheURI;其中响应是返回给AngularJS的内容

这是ApiController中返回的内容

{"ObjectName":[{"ID":"123456","FormalName":"LastName, FirstName","SearchName":null,"Number":"xx-123-456789","OfficeName":"Some Office INC","Code":"987654","CompanyCode":"852","StateAbbr":"MN"}]}
…但正如您所看到的,Controller.service.common.GetTheData.get{sendData:objData}函数myResponse正在返回,因为myResponse实际上是正确的数据,但在数组中为每个字符分割

Response       [object (Resource)]
   _proto_     [object (Resource)]
   $promise    [object (Promise)]
   $resolved   true
   [0]         "{"
   [1]         "\"
   [2]         "O"
   [3]         "b"
   [4]         "j"
   [5]         "e"
   [0]         "c"
   [1]         "t"
   [2]         "N"
   [3]         "a"
   [4]         "m"
   [5]         "e"
   [0]         ":"
   [1]         "["
   [2]         "{"
   [3]         "I"
   [4]         "D"
   [5]         ":"
…等等

…我这里缺什么?

你可以用图书馆

这会回来的

[
  {
    "ID": "123456",
    "FormalName": "LastName, FirstName",
    "SearchName": null,
    "Number": "xx-123-456789",
    "OfficeName": "Some Office INC",
    "Code": "987654",
    "CompanyCode": "852",
    "StateAbbr": "MN"
  }
]

因此,实际的问题是从HttpResponseMessageLocal controller类型的控制器中的远程WebAPI获取HttpResponseMessage,并试图将其传递回$resource…不,不

我实际做的是将本地控制器更改为键入SimpleResponse…T,这是您要填充的模型。是的,不幸的是,如果出于任何原因需要像这样调用遥控器,则必须在本地控制器上复制模型

一旦我有了它,我反序列化了对象并将SimpleResponse返回到$resource,一切都很愉快

public class MyControllerController : ApiController {
    public SimpleResponse<DataModel> GET(string _inData) {            
        DataModel data = new DataModel();


            try {
                System.Net.WebClient client = new System.Net.WebClient();

                String Domain = CallToGetValueFromWebConfig("WEBAPIURL", "value");
                String theURI = String.Format("{0}api/ApIControllerName?_inData={1}", Domain, _inData);


                client.BaseAddress = theURI;
                client.UseDefaultCredentials = true;

                var json = client.DownloadString(theURI);

                data = JsonConvert.DeserializeObject<DataModel>(json, new JsonSerializerSettings() {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });



            } catch (Exception ex) {
                EventLogging.AddExceptionEvent(EventLogging.EventID.WebApiDataGet, "Some error text", ex);
            }

        return new SimpleResponse<DataModel> { Data = data}; 
    }
}
}

这是不可能回答的。你的JSON看起来不错。它的内容头呢?接收此JSON的代码是什么?您的客户端代码错误地将其解释为字符数组,但您没有将其包括在问题中。见鬼,也给我们看看你的服务器端代码。目前,我投票通过一个字符串类型的APIController关闭。这意味着什么?问题用Angular标记,因此可以安全地假设他们正在解析JSON客户端,而不是服务器端。不,实际上我说过我是通过一个ApicController获取数据的,它是一个C.net可继承对象。我确实尝试了上面的解决方案,但是var响应为null?
public class MyControllerController : ApiController {
    public SimpleResponse<DataModel> GET(string _inData) {            
        DataModel data = new DataModel();


            try {
                System.Net.WebClient client = new System.Net.WebClient();

                String Domain = CallToGetValueFromWebConfig("WEBAPIURL", "value");
                String theURI = String.Format("{0}api/ApIControllerName?_inData={1}", Domain, _inData);


                client.BaseAddress = theURI;
                client.UseDefaultCredentials = true;

                var json = client.DownloadString(theURI);

                data = JsonConvert.DeserializeObject<DataModel>(json, new JsonSerializerSettings() {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });



            } catch (Exception ex) {
                EventLogging.AddExceptionEvent(EventLogging.EventID.WebApiDataGet, "Some error text", ex);
            }

        return new SimpleResponse<DataModel> { Data = data}; 
    }
}
}