2014-04-01 103 views
1
json="{\n \"kind\": \"plus#person\", 
    \n \"etag\": \"\\\"GjejyguyfTE/pdfBI8xyufoiuh9bOLZ8VyG_8\\\"\", 
    \n \"gender\": \"male\", 
    \n \"emails\": [\n {\n \"value\": \"[email protected]\",\n \"type\": \"account\"\n }\n ], 
    \n \"objectType\": \"person\", 
    \n \"id\": \"xxxxxxxxxxxxxxx\", 
    \n \"displayName\": \"XXXXXXXXX XXXXXXX\", 
    \n \"name\": {\n \"familyName\": \"XXXXXX\",\n \"givenName\": \"XXXXXX\"\n }, 
    \n \"url\": \"https://plus.google.com/xxxxxxxxxxxxxxx\", 
    \n \"image\": {\n \"url\": \"https://lh3.googleusercontent.com/-XdUWA/AAAAAAI/AAbbbbAA/42hhscbv5M/photo.jpg?sz=70\"\n }, 
    \n \"isPlusUser\": true, 
    \n \"language\": \"en\", 
    \n \"ageRange\": {\n \"min\": 21\n }, 
    \n \"circledByCount\": 0, 
    \n \"verified\": false\n}\n" 



public class GoogleUser 
    { 
     public string kind { get; set; } 
     public string etag { get; set; } 
     public string gender { get; set; } 
     public Email[] emails { get; set; } 
     public string objectType { get; set; } 
     public string id { get; set; } 
     public string displayName { get; set; } 
     public Name name { get; set; } 
     public string url { get; set; } 
     public Image image { get; set; } 
     public bool isPlusUser { get; set; } 
     public string language { get; set; } 
     public AgeRange ageRange { get; set; } 
     public int circledByCount { get; set; } 
     public bool verified { get; set; } 
    } 

    public class Name 
    { 
     public string familyName { get; set; } 
     public string givenName { get; set; } 
    } 

    public class Email 
    { 
     public string value { get; set; } 
     public string type { get; set; } 
    } 
    public class Image 
    { 
     public string url { get; set; } 
    } 
    public class AgeRange 
    { 
     public int min { get; set; } 
    } 





GoogleUser user = new JavaScriptSerializer().Deserialize<GoogleUser>(json); 

我在C# 4.0 发展我在项目中使用login with google+按钮。 我想通过使用access_token来获取用户。 我可以将它们作为json filen。 然后我想复制他们我的GoogleUser class。 我没有得到错误,但user总是等于null。 通过这种方式,昨天我可以获取用户的数据,但不是今天。反序列化JSON到类在C#

什么是我的问题?

<code>string a</code> is not <code>null</code>, it is my <code>json</code> file, but <code>user</code> is <code>null</code>

+0

你发布的代码似乎工作... – sloth

+0

第一件事;浏览器可能会缓存请求/数据,并搞砸了事情(铬是善于搞砸JavaScript缓存),其次;由于多种原因,我会使用JsonProperty属性,例如[JsonProperty(“kind”)]然后Propercase属性。 –

+0

我会尝试JsonProperty,但它通过这种方式昨天工作。 – Jeyhun

回答

2

你可以尝试:

user = new JavaScriptSerializer().Deserialize<A>(a); 

既然你说 “是” 有字符串中的价值。也许问题是你正在调用ReadToEnd两次?

+0

我在发布我的问题后添加了图片,因此其他用户看不到它, 非常感谢,现在它能正常工作。我今天添加了'string a') – Jeyhun

+0

例如我在'json'文件中有'name ='Jeyhun'''surname =“Elvin”'' 我只想得到'name'。 我是否有义务在我的'USERS'类'surname'中声明? 或者足够了 'USERS class {public string name {get;设置;}}' – Jeyhun

+0

我会说试试看。我不确定。我认为它会起作用。 – Derek