2012-09-21 29 views
0

因此,我發送一個Json對象到我的服務器,並且我想將它轉換爲我稱爲PersonalPreferences的強類型用戶類型對象。使用JavaScriptSerializer將Json字符串轉換爲對象

這裏是JS

{ 
"PersonalPreferences": [ 
    { 
     "FavoriteFood": "Pasta with butter and cheese" 
    }, 
    { 
     "FavoriteSport": "Submission Wrestling" 
    }, 
    { 
     "FavoriteGame": "Starcraft 2" 
    }, 
    { 
     "FavoriteMusic": "Hip Hop" 
    } 
] 
} 

我已經創建了一個JSON對象我發送匹配的類。

[DataContract] 
public class PersonalPreferences 
{ 
    [DataMember] 
    public string FavoriteFood { get; set; } 

    [DataMember] 
    public string FavoriteSport { get; set; } 

    [DataMember] 
    public string FavoriteGame { get; set; } 

    [DataMember] 
    public string FavoriteMusic { get; set; } 

    public PersonalPreferences() 
    { 
    } 

    public PersonalPreferences(string favoriteFood, string favoriteGame, string favoriteMusic, string favoriteSport) 
    { 
     this.FavoriteFood = favoriteFood; 
     this.FavoriteGame = favoriteGame; 
     this.FavoriteMusic = FavoriteMusic; 
     this.FavoriteSport = favoriteSport; 

    } 
} 

這裏是我的處理程序接收請求並將其轉換爲用戶類型對象。 我的問題是PersonalPreference對象是空的。 jsSerializer.Deserialize調用空構造函數,並且Json對象中的值不會傳遞給PersonalPreference對象。 我已檢查請求中的Json值是否存在於字符串中。

[WebService(Namespace = "http://localhost:53243")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class JSonTestHandler : IHttpHandler, System.Web.SessionState.IReadOnlySessionState 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     string jsonData = new StreamReader(context.Request.InputStream, System.Text.Encoding.UTF8).ReadToEnd(); 
     var jsSerializer = new JavaScriptSerializer(); 
     var personalPreferences = jsSerializer.Deserialize(jsonData, typeof(PersonalPreferences)); 
    }} 

回答

0

提供的json格式化字符串看起來有點不妥。 如果檢查有以下的JSON格式的字符串,它的正常工作:

{ 「FavoriteFood」: 「意大利麪食黃油和奶酪」, 「FavoriteSport」: 「提交摔跤」, 「FavoriteGame」: 「星際爭霸2」,」 FavoriteMusic「: 」Hip Hop「}

您是如何生成Json格式的字符串的?

+0

是的!現在它可以工作。非常感謝現在我知道如何去Json。 :) – Lautaro

+0

我用手從客戶端Javascript中編寫了Json格式。你有更好的方法嗎? – Lautaro

相關問題