我正在开发一个演示Silverlight应用程序,我想做一些简单的JSON.我System.Runtime.Serialization.Json.DataContractJsonSerializer在MSDN上找到了这个 类,但我似乎无法在Visual Studio 2010中成功引用它.
我添加了一个引用System.Runtime.Serialization,但是如果我有一个DataContractJsonSerializer(即使是一个完全限定的类名),我仍然会遇到编译错误.我的项目配置为Silverlight 4.当我添加引用时,程序集确实有一个2.0版本号,但是我找不到4.0版程序集.
为什么我不能使用这个课程?
Namespace: System.Runtime.Serialization.Json Assembly: System.Runtime.Serialization (in System.Runtime.Serialization.dll)
我正在尝试使用ASP.NET MVC 2站点中的地理编码代码.不幸的是,某些代码,特别是DataContractJsonSerializer用法,只能通过.NET 4.0实现.由于我的托管服务提供商不支持.NET 4,我不得不在.NET 3.5中实现该功能.
我如何重新编写代码(我在下面重新发布)在.NET 3.5中工作?
Google Maps Geocoding API也可以返回XML,如果在3.5中更容易序列化...
下面是我试图从.NET 4转换为.NET 3.5的代码:
using System;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Net;
using System.Web;
.
.
.
private static GeoResponse CallGeoWS(string address)
{
string url = string.Format(
"http://maps.google.com/maps/api/geocode/json?address={0}®ion=dk&sensor=false",
HttpUtility.UrlEncode(address)
);
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(GeoResponse));
var res = (GeoResponse)serializer.ReadObject(request.GetResponse().GetResponseStream());
return res;
}
[DataContract]
class GeoResponse
{
[DataMember(Name="status")]
public string Status { get; set; }
[DataMember(Name="results")]
public …Run Code Online (Sandbox Code Playgroud)