2010-07-16 71 views
2

試圖得到一個對象出來STR1的= X & STR2 = Y使用Newtonsoft.Json名稱 - 值對字符串到JSON

獲得:「意外字符遇到在解析值:s線路1,位置1 「。

我是否期待這項工作?

public class MyTest 
{ 
    public string str1 { get; set; } 
    public string str2 { get; set; } 
} 

public MyTest GetJson() 
{ 
     data = "str1=X&str2=Y"; 
     JsonSerializerSettings jss = new JsonSerializerSettings(); 
     jss.MissingMemberHandling = MissingMemberHandling.Error; 
     jss.ObjectCreationHandling = ObjectCreationHandling.Reuse; 
     MyTest myTest = JsonConvert.DeserializeObject<MyTest>(data, jss); 
} 
+1

該數據不是JSON。 – 2010-07-16 21:14:24

+0

你想做什麼? – SLaks 2010-07-16 22:33:29

回答

3

是的,你走了。 json看起來更像這樣:

{"str1":"x","str2":"y"} 

請參閱www.json.org獲取更多信息。

編輯

要查詢字符串轉換成JSON:

var queryString = "str1=X&str2=Y"; 
var queryParams = HttpUtility.ParseQueryString(queryString); 

var jsonObject = new JObject(from k in queryParams.AllKeys 
          select new JProperty(k, queryParams[k])); 

爲JSON字符串轉換爲對象:

MyTest test = JsonConvert.DeserializeObject<MyTest>(jsonObject.ToString()); 

將對象轉換爲JSON:

var test = JsonConvert.SerializeObject(new MyTest{str1 = "X", str2 = "Y"}); 
+0

一個小小的尼特,正確的JSON總是用雙引號將密鑰名稱封裝起來:'{「str1」:「x」,「str2」:「y」}'儘管這並不總是強制執行。你的例子是一個JavaScript對象字面值,雖然相似,但是並不相同。 – 2010-07-16 21:19:26

+0

雖然這是一個有效的Javascript對象,但它不是有效的JSON。 JSON還需要引用密鑰,你可以這樣寫: '{「str1」:「x」,「str2」:「y」}' – bluesmoon 2010-07-16 21:20:39

+0

謝謝,夥計們。修復了迴應。 – StriplingWarrior 2010-07-16 21:24:08

2

這就是一個查詢字符串,而不是一個JSON字符串。
您可以使用HttpUtility.ParseQueryString解析它,它將返回NameValueCollection

+0

,這使我留下了大約相同的地方,我如何將NameValueCollection轉換爲json? – saarpa 2010-07-16 21:42:59