2012-02-15 200 views
2

我有一個KeyPairValue的列表,我使用JavaScriptSerializer在Json對象中進行序列化。這個操作的輸出給我這樣的事情:自定義Json序列化

[{"Key":"A","Value":"ValueA"},{"Key":"D","Value":"ValueD"}] 

I'ld想擺脫那些「」周圍的屬性名稱,以便它可以是這樣的:

[{ Key:"A", Value:"ValueA"},{ Key:"D", Value:"ValueD"}] 

是否有實現這一目標的方式,或者我正在尋找什麼只是不是Json序列化?

+0

我比JSON更喜歡JSON,因爲它更容易閱讀,編寫速度更快。但鍵**「**」非常痛苦。 – brgerner 2012-02-15 15:20:58

+0

即你不想要json? – CodesInChaos 2012-02-15 15:35:51

回答

2

您可以Json.Net

StringWriter str = new StringWriter(); 
JsonTextWriter writer = new JsonTextWriter(str); 
writer.QuoteName = false; //<-- This is the trick 
JsonSerializer jsonSer = new JsonSerializer(); 
jsonSer.Serialize(writer, new { ID = 1, Name = "Jack" }); 

string jsonstr = str.ToString(); 

輸出實現它是{ID:1,Name:"Jack"}

+0

正是我需要thanx很多! – 2012-02-15 15:38:31

+0

記錄:生成的輸出是海報要求的內容,但不是有效的Json(正如其他答案中所述)。許多Json消費者不會接受/處理這個字符串。你真的不應該把它稱爲Json,因爲它現在不是了。 – Eddy 2012-02-15 16:03:43

+0

@Eddy,好的。我從現在開始將它命名* Myon *(我的對象符號) – 2012-02-15 16:25:02

1

據我所知,這是JSON必須要求在「」中嵌入你的密鑰。這是因爲JSON實際上是JavaScript對象的傳輸格式,因此它有一些具體的細節。

0

的RFC指定的名稱是一個字符串,它也指定一個字符串必須包裝在引號。

RFC 4627

值得注意的不同類型的值可以和某些類型的沒有被包裹在引號。你也可以在規範中找到它。