解析JSON字符串的ASP.NET Web服务,并返回JSON字符串
问题描述:
海兰解析JSON字符串的ASP.NET Web服务,并返回JSON字符串
我的iPhone开发人员,我有一个应用程序,它有asp.net和MSSQL数据库背后的通信。我想,与JSON字符串沟通会很好。我已经实现了iPhone端,但之后,我坚持。 - 如何解析JSON字符串到.NET类中? - 如何使用数据调用存储过程? - 如何以JSON字符串响应iPhone?
这是我实现:
MutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"**POST**"];
[request setCachePolicy:NSURLCacheStorageNotAllowed];
[request setTimeoutInterval:60.0f];
SBJsonWriter *writer = [SBJsonWriter new];
NSString *paramStr = [writer stringWithObject:_parameters];
[writer release];
NSData *requestData = [paramStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[request setHTTPBody:requestData];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
这里是日志与请求和有效载荷(的RequestData):
URL: http://mydomain.hu/MainHandle.ashx/login
paramString: {"password":"myPassword","email":"myAddress"}
答
我喜欢使用用ScriptService属性(System.Web.Script.Services命名空间)修饰的ASP.NET web服务(.asmx文件)。这将自动转换传入的JSON对象为.NET类和结果将被转换成JSON:
public class UserInfo
{
public string password { get; set; }
public string email { get; set; }
}
public class ServiceResult
{
// Service result
}
[ScriptService]
public class MyService
{
[WebMethod, ScriptMethod(UseHttpGet = false)]
public ServiceResult DoStuff(UserInfo userInfo)
{
// Do stuff with userInfo.password, userInfo.email
return new ServiceResult();
}
}
答
使用JavaScriptSerializer类的Deserialize<T>
方法来解析JSON的.NET类(.NET 3.5 SP1和4.0)。 通过将类的属性作为参数传递给过程来调用存储过程。
使用JavaScriptSerializer类的Serialize
方法将.NET对象转换为JSON。
或者使用一个WCF服务来处理一些序列化。
我会付出真金白银看到一个*简单* C#webservice的沟通与Android的应用发明TinyWebDB的GetValue和StoreValue方法。我不清楚的是,如果我的价值标签需要在服务代码中定义(硬编码),或者它们可以通过参数发送到Web服务。 – o365spo 2011-01-25 17:57:41