2

我在尝试获取 JSON 字符串时遇到问题

[{键:{键:值,键:值,键:值,键:值},键:[{键:值,键:值,键:值,键:值}]

在 C# 中。

我的班级结构是这样的

        public class wideeye
    {
        public listing listing { get; set; }
        public listing_images[] listing_images { get; set; }
    }

    public class listing
    {

        public string category { get; set; }
        public string city { get; set; }
        public string country { get; set; }
        public string created_at { get; set; }
        public string current_publish_date { get; set; }
        public string details { get; set; }
        public string id { get; set; }
        public string industry { get; set; }
        public string list_exp_date { get; set; }
        public string list_price { get; set; }
        public string list_start_date { get; set; }
        public string make { get; set; }
        public string model { get; set; }
        public string open_bid { get; set; }
        public string state { get; set; }
        public string status { get; set; }
        public string title { get; set; }
        public string updated_at { get; set; }
        public string year { get; set; }
    }

    public class listing_images
    {
        public string created_at { get; set; }
        public string id { get; set; }
        public string listing_id { get; set; }
        public string listing_image_content_type { get; set; }
        public string listing_image_file_name { get; set; }
        public int listing_image_file_size { get; set; }
        public string listing_image_updated_at { get; set; }
        public string updated_at { get; set; }

    }

}

代码是

 listing bid1 =
              new listing { category = "electronics", city = "BBSR" };

     listing_images bid2 =
             new listing_images {  created_at = "Instrumentation",  id = "10" };

     List<listing> obid1 = new List<listing>() { bid1};
     List<listing_images> obid2 = new List<listing_images>() { bid2 };

        //DataContractJsonSerializer serializer =  null;

     string sJSON = JsonConvert.SerializeObject(obid1);
     string sJSONw = JsonConvert.SerializeObject(obid2);
4

3 回答 3

2

DataContractJsonSerializer 类非常好用。

将 System.Runtime.Serialization.dll 和 System.Servicemodel.Web.dll 的引用添加到您的项目中。

using System.Runtime.Serialization.Json;

...
...
...

    MemoryStream stream = new MemoryStream();
    DataContractJsonSerializer sr = new DataContractJsonSerializer(obj.GetType());

    sr.WriteObject(stream, obj);
    stream.Position = 0;

    StreamReader reader = new StreamReader(stream);
    string jsonResult = reader.ReadToEnd();

当然要进行适当的异常处理。

于 2012-04-04T12:47:15.827 回答
1

在此处输入图像描述我投票支持使用 JSON.net @ http://json.codeplex.com/它被 Microsoft 采用并且它比 DataContractJsonSerializer 更有效

此处使用示例:http: //james.newtonking.com/projects/json/help/

序列化器的性能

或者如果不使用 Javascript 序列化器

 protected static string JsonSerialize(Object obj)
 {
        var serializer = new System.Web.Script.Serialization.JavaScriptSerializer { MaxJsonLength = int.MaxValue };
        var json = serializer.Serialize(obj);
        return json;
  }
于 2012-04-04T12:54:13.283 回答
0

会将此作为评论留下,但相当麻烦:

向您的项目添加对 System.Web.MVC 的引用,然后像这样创建 JSON:

var jsonOutput = Json(obid1);

这就是我在 MVC 控制器中为我的 AJAX 调用生成 JSON 的方式。虽然没有在 Windows 移动应用程序中尝试过。

只是一个想法。

于 2012-04-04T12:03:27.330 回答