Newtonsoft -JsonConvert:如何从字典<class,int> </class,int>序列化类对象键

时间:2014-07-10 10:38:29

标签: c# json.net

我已将类对象存储为键,将int作为值存储在字典中。我想将字典转换为json字符串,但没有获得成功。我正在使用NewtonSoft进行json转换。这是我的代码,

 SeatInfo seatInfo = new SeatInfo() { SeatNo = 1, Status = true, NickName = "Suresh", UserID = "sss" };
Dictionary<SeatInfo, int> dic = new Dictionary<SeatInfo, int>();
dic.Add(seatInfo, 40);


string json = JsonConvert.SerializeObject(dic, Formatting.Indented, new JsonSerializerSettings
  {
      TypeNameHandling = TypeNameHandling.None,
      TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
  });

此代码的结果是,

{"SignalRServer.SeatInfo":40}

如何将类属性转换为字符串。提前致谢

2 个答案:

答案 0 :(得分:0)

在Web Service中尝试以下代码并运行Webservice:

   SqlConnection con = new SqlConnection("Here Copy your connection string");

    [WebMethod]
    [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
    public string GetData()
    {
        var json = "";
        List<Dictionary<string, object>> lst = new List<Dictionary<string, object>>();
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tbldemo",con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        con.Close();
        foreach (DataRow row in dt.Rows)
        {
            Dictionary<string, object> lst1 = new Dictionary<string, object>();
            foreach (DataColumn dc in dt.Columns )
            {
                lst1.Add(dc.ColumnName,row[dc]);
            }
            lst.Add(lst1);
        }
        JavaScriptSerializer js = new JavaScriptSerializer();
        json = js.Serialize(lst);
        return json;

    }

答案 1 :(得分:0)

我找到了答案。但我不确定这是否正确。我只是将字典对象转换为List。所以我得到的类属性是key,int是value。

    string json = JsonConvert.SerializeObject(dic.ToList(), Formatting.Indented, new JsonSerializerSettings
  {
      TypeNameHandling = TypeNameHandling.None,
      TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
  });

这里我只是将dic对象转换为 dic.ToList()。输出是,

 {
    "Key": {
      "SeatNo": 1,
      "UserID": "sss",
      "NickName": "Suresh",
      "Status": true
    },
    "Value": 40
  }

请指导我如果我错了,谢谢