您可以嘗試使用字典,以便您可以輕鬆地將任何類型的對象添加到字典的值,如下所示;
Dictionary<string,object> myDict = new Dictionary<string,object>();
myDict.Add("StringList", new List<string>() { "string1", "string2" });
myDict.Add("Bool", false);
myDict.Add("Int", 2016);
改進答案:火柴給定樣本的Json
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SO_39849909
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, object> myDict = new Dictionary<string, object>();
myDict.Add("task", new Dictionary<string, object>());
Dictionary<string, object> innerDict = (myDict["task"] as Dictionary<string, object>);
innerDict.Add("taskState", "Running");
innerDict.Add("taskStatus", "Ok");
innerDict.Add("completedSteps", 1);
innerDict.Add("taskProgress", new List<dynamic>());
List<dynamic> taskProgress = (innerDict["taskProgress"] as List<dynamic>);
taskProgress.Add(new { message = "test message", timeStamp = DateTime.Now });
string json = JsonConvert.SerializeObject(myDict, Formatting.Indented);
Console.WriteLine(json);
Console.ReadLine();
}
}
}
而且從dotnetfiddle工作的例子就是在這裏https://dotnetfiddle.net/ZYcZKp
然後你就可以序列化字典JSON。
PS:作爲一個建議,您可以考慮使用Newtonsoft.Json(https://www.nuget.org/packages/Newtonsoft.Json/)
PS-編輯:考慮使用可能對運行時解決沉重代價的動態表達。
希望這會有所幫助。
我無法實現我的情況的解決方案,在以下情況下:' 「taskProgress」:[{ 「消息」 :「test message」, 「timeStamp」:「date_time」 }]',我的測試消息和date_time是動態的,如果你能解決我解決方案中的解決方案,這也會有幫助。謝謝 – Sumit
所以我修改了我的答案,並創建了一個工作示例,它與示例JSON @Sumit 1:1希望這是您的期望。 –
感謝Cihan的詳細回覆,這將是我的問題的替代解決方案,因爲以前我使用JObject來構建我的jSON響應,儘管我可以創建「taskProgress」列表,當我通過它時JObject通過添加相應的參數作爲jToken,它總是作爲字符串,這是創建問題。但是你的解決方案正在爲我工作,所以再次感謝。 :) – Sumit