+ -
当前位置:首页 → 问答吧 → 超难 json转C#对象. 分全给了~!!!

超难 json转C#对象. 分全给了~!!!

时间:2011-12-06

来源:互联网

s = "{term:'111204'}"怎么将这个转成C#对象???别认为很简单,可以很容易的将s = "{\"term\":\"111204\"}"转成对象,但前者转不知道怎么转。 但他又确实是JSON对象,我无法修改前面那种写发,也不能用字符串替换,因为这只是整个JSON中的一部分,下面是代码:
using System;
  using System.IO;
  using System.Runtime.Serialization.Json;
  using System.Text;

  public sealed class JSONHelper
  {
  private static JSONHelper inst = new JSONHelper();

  private JSONHelper()
  {
  }

  public static JSONHelper Inst
  {
  get
  {
  lock (inst)
  {
  return inst;
  }
  }
  }

  public T Deserialize<T>(string json)
  {
  T obj = Activator.CreateInstance<T>();
  MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
  DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  obj = (T) serializer.ReadObject(ms);
  ms.Close();
  ms.Dispose();
  return obj;
  }

}


  [DataContract]
  public class Teams
  {
  //public HistoryTerms HistoryTerms { get; set; }
  [DataMember(Name = "term")]
  public string term { get; set; }

  public Teams()
  {

  }
  }


Teams teams = JSONHelper.Inst.Deserialize<Teams>(s);

作者: amingo   发布时间: 2011-12-06

没转过,帮顶!

作者: li_ser   发布时间: 2011-12-06

换个 Json.Net http://json.codeplex.com/ 就可以了。.NET自带的那个太死板了。

作者: fangxinggood   发布时间: 2011-12-06

谁说"{term:'111204'}" 这个是json

作者: Sandy945   发布时间: 2011-12-06

虽然没有严格遵守 262 规范,但 Json.NET 确实可以处理:
C# code

var json = "{term:'111204'}";
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

作者: fangxinggood   发布时间: 2011-12-06

是么,那看来Json.NET 很犀利啊

作者: Sandy945   发布时间: 2011-12-06