2013-12-14 57 views
1

我讀過與此類似的其他問題,它們並不相同。JsonSerializer反序列化字符串錯誤 - 無效的原語

我試圖讓這個值轉換成字符串屬性:

{ 
    "Save": { 
     "InArguments": [ 
      { 
       "ArgumentName": "Id", 
       "Value": "UVE1NjFGdVVFZU95OWdCUVZvZGc1Zzo1MDow" 
      } 
     ] 
    } 
} 

該物業爲標識 - 值應該是「UVE1NjFGdVVFZU95OWdCUVZvZGc1Zzo1MDow」

類有此屬性:

public string Id { get; set; } 

我有這個類中的其他數據類型,集合和布爾,他們得到反序列化就好了。它不喜歡這個價值是什麼?我試着把它寫成小寫,認爲格式不好 - 不行。此值包含的是加密的ID。

這裏是我如何獲得在InArguments類中的JSON我想要的特定項目:

public new T Get(ActivityContext activityContext) 
    { 
     var item = activityContext.DataContext.Arguments.Find(r => r.ArgumentName.ToLower() == ArgumentName); 

     try 
     { 
      if (null != item) 
      { 
       if (null != item.Value) 
       { 
        Type argumentType = Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T); 
        var jsSerializer = new JavaScriptSerializer(); 
        return (T)jsSerializer.Deserialize<T>(item.Value.ToString());       
       } 
       else 
       { 
        return default(T); 
       } 
      } 

      return default(T); 
     }     
     catch (Exception ex) 
     { 
      //log exception 
     } 

     return default(T); 
    } 

的ArgumentType返回是一個字符串。它正試圖填充的屬性究竟是什麼數據類型。 GET方法我對象的初始化期間調用我想:

var sendDefinitionRestHandler = new SendDefinitionRestHandler() 
      { 
       Id = Id.Get(activityContext) 
}; 

希望這是足夠的信息,讓我知道如果你需要我詳細說明什麼。謝謝你的時間。

+0

無效的JSON ... –

+0

這是真的。我添加了額外的數據以使其有效。 – DeepToot

回答

0

由於某些原因,這是我的特殊問題的答案。 '價值'不是作爲進入Deserializer的字符串處理的。所以它在'U'上轟炸並給了我原始錯誤。

通過簡單地增加一個單引號圍繞價值:

"Value": "'UVE1NjFGdVVFZU95OWdCUVZvZGc1Zzo1MDow'" 

它能夠反序列化它成一個字符串。這應該不是一個問題,至少我不認爲它應該。現在我正試圖弄清楚它在意什麼,以及爲什麼它不會將它視爲一個字符串開始。

相關問題