我有如下一個非常簡單的方法,自定義類:如何創建從JSON字符串,而無需創建使用JSON.Net庫
//my current file
using Newtonsoft.Json;
string key1 = "FirstKey";
string key2 = "SecondKey";
string key3 = "ThirdKey";
private string CreateJson(string val1, string val2, string val3,string val4, string val5, string val6)
{
//process the six arguments and three key-related member variables to create a JSON array
//don't want to use JsonConvert.SerializeObject the way I'm doing below as it requires creating a class
var configs = new List<CustomClass>
{ new CustomClass{ FirstKey = val1,SecondKey= val2,ThirdKey= val3}
, new CustomClass{ FirstKey= val4,SecondKey= val5,ThirdKey = val6}
};
var jsonData = JsonConvert.SerializeObject(configs);
return jsonData;
}
//A class in another file
public class CustomClass
{
public string FirstKey { get; set; }
public string SecondKey{ get; set; }
public string ThirdKey{ get; set; }
}
我試圖創建一個使用JSON.Net JSON數組。預期輸出如下:
[{"FirstKey":val1,"SecondKey":val2,"ThirdKey":val3}
, {"FirstKey":val4,"SecondKey":val5,"ThirdKey":val6}]
這裏val1
到val6
值應在運行時的參數值被替換。最初,由於只有三種類型的字符串鍵值對,所以我認爲創建JSON字符串非常簡單,只需使用字符串文字並以JSON格式一個接一個追加。但很快我偶然發現了可以使JSON字符串變形的逃逸字符的世界,例如\r
。
我以前一直在使用JSON.Net庫,只是簡單地使用JSONConvert
類對對象進行序列化和反序列化,而我從來不關心並完全不知道JSON.Net庫對逃逸字符的處理方式。保持JSON字符串有效。
反正,回到我的問題。我能夠通過創建具有三個屬性FirstKey
,SecondKey
和ThirdKey
的自定義類來解決我的問題。然後,創建該類的對象,然後分配參數val1
和val2
中的值,然後使用JsonConvert.SerializeObject
API。
我想要一個非常簡單的方式,使用JSON.Net NuGet包創建JSON字符串,而不涉及自定義類。在這裏創建一個類CustomClass
總是感覺像一個開銷。我正在尋找類似於StringBuilder.Append
API的東西,如果它在我正在使用的JSON庫中可用的話。我不確定是否缺少JSON.Net中的任何API。
已經有答案了,比如[so1](https://stackoverflow.com/questions/21021655/json-serialize-listkeyvaluepairstring-object),[so2](https://stackoverflow.com/questions/ 5124889/serialize-net-dictionarystring-string-into-json-key-value-pair-object) –
將值選擇爲匿名類型,然後對其進行序列化。 – stuartd
@stuartd,因爲我需要一個JSON數組作爲我的最終輸出,所以我將不得不創建一個'List'。我如何定義'List '變量? –
RBT