将json字符串反序列化为通用列表(将值转换为类型'System.Collections.Generic.List`1 Path'',第1行,位置70时出错

时间:2013-11-25 05:23:58

标签: c# json wcf rest generics

在将json字符串反序列化为列表

时,这里面临一些问题

json string:restful service的结果

“\”{\\ “UNAME \\”:\\ “普拉萨德\\”,\\ “名字\\”:\\ “K \\”,\\ “姓\\”:\\”赛\\ “} \”“

我希望将此json字符串转换为genric list

我的清单:

公共类_TempUser       {

      public string UName
      {
          get;
          set;

      }


      public string LastName
      {
          get;
          set;
      }

      public string FirstName
      {
          get;
          set;
      }
  }

错误是

错误转换值“{”UName“:”prasad“,”LastName“:”k“,”FirstName“:”sai“}”键入'System.Collections.Generic.List`1 [loginServices.Login_Service + _TempUser]”。路径'',第1行,第70位。

代码:用于调用restful service

var httpWebRequest =(HttpWebRequest)WebRequest.Create(“http:// IpAddress:Post / Login / RestServiceName.svc / RestMethoName”);

        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json =JsonConvert.SerializeObject(Req);
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                 string result =  streamReader.ReadToEnd();

                List<_TempUser> List = new List<_TempUser>();  

                List = JsonConvert.DeserializeObject<List<_TempUser>>result     
            }

        }

任何修改或建议plz

1 个答案:

答案 0 :(得分:0)

首先你的json字符串必须是这样的:

"{\"UName\":\"prasad\",\"LastName\":\"k\",\"FirstName\":\"sai\"}"

不是

"\"{\\"UName\\":\\"prasad\\",\\"LastName\\":\\"k\\",\\"FirstName\\":\\"sai\\"}\""

然后你可以使用:

解析它
string entry = "{\"UName\":\"prasad\",\"LastName\":\"k\",\"FirstName\":\"sai\"}";
var parsedObject = JsonConvert.DeserializeObject<JObject>(entry);
        foreach (var dataset in parsedObject.Properties())
        {
            Console.WriteLine(dataset.Name);
        }

我正在使用Newtonsoft.Json和Newtonsoft.Json.Linq进行解析。