C# 作为单个字符数组读取的JSON数据
我有点小问题,希望有人碰到了,知道发生了什么 我正在调用我们的WebAPI来获取$resource的数据 angularJS控制器代码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
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};
}
}
}