[英]Issue In JSON Result when using JsonConvert.SerializeObject C#
[英]How to use a specific field as the name of a json object when using jsonconvert.serializeobject?
所以我當前來自serializeobject的輸出是:
{
"ID": "dog-1",
"fed": [
"2016/05/19T01:00:00Z"
]
},
“ ID”是我要序列化的對象中的字符串,“ fed”是字符串列表。
我的問題是,我可以使用某種屬性來代替它嗎?
"dog-1" : {
"fed": [
"2016/05/19T01:00:00Z"
]
},
我正在使用newtonsoft JsonConvert.SerializeObject
簡短的回答:不,你不能
您正在序列化一個對象,這是將其結構轉換為描述其屬性和值的字符串。
但是,您可以標識要序列化的結構,將對象從其原始結構遷移到所需的結構,然后序列化。
在您的示例中,您有一個看起來像這樣的對象:
class yourObject {
public string ID;
public Date fed;
}
但是您想要序列化為更像字典的東西,該字典穩定了字符串和Date之間的直接關系。
也許您可以創建類似於以下內容的東西:
class yourOtherObject {
public Date fed;
}
並以如下方式加載原始對象:
yourObject originalData = new yourObject("dog-1", "2016/05/19T01:00:00Z");
yourOtherObject originalDataDate = new yourOtherObject();
originalDataDate.fed = originalData.fed;
KeyValuePair<string, yourOtherObject> serializableData = new KeyValuePair<string, yourOtherObject>(originalData.ID, originalDataDate);
現在,如果序列化serializableData ,則應獲得所需的結果。 只需將想法封裝到一個類中,創建臨時的構造函數和方法,即可將數據從yourObject傳輸到此類,再從該類傳輸到yourObject,則可以獲取翻譯。
另一個選擇是添加一個方法,使特定的序列化進入yourObject類,但是從長遠來看,這往往會花費更多的工作。
找到了可用的解決方案。
var x = new List<MyClass>();
JsonConvert.SerializeObject(x.ToDictionary(x => x.ID));
這將創建一個Json列表,每個對象如下所示:
"dog" : {
"myList" : [
"mystring",
"mysecondstring"
]
}
帶有如下所示的對象列表:
object.ID == "dog"
object.myList == ["mystring", "mysecondstring"] //is a List<string>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.