Создайте Json динамически в С#
Мне нужно создать объект Json динамически, перейдя по столбцам.
поэтому объявляя пустой объект json, добавляем к нему динамически, чтобы, наконец, выглядеть следующим образом:
Конечный объект json должен выглядеть следующим образом:
List<String> columns=new List<String>{"FirstName","LastName"};
var jsonObj= new {};
for(Int32 i=0;i<columns.Count();i++)
jsonObj[col[i]]="Json" + i;
jsonObj={FirstName="Json0", LastName="Json1"};
Ответы
Ответ 1
[TestFixture]
public class DynamicJson
{
[Test]
public void Test()
{
dynamic flexible = new ExpandoObject();
flexible.Int = 3;
flexible.String = "hi";
var dictionary = (IDictionary<string, object>)flexible;
dictionary.Add("Bool", false);
var serialized = JsonConvert.SerializeObject(dictionary); // {"Int":3,"String":"hi","Bool":false}
}
}
Ответ 2
Вы должны использовать JavaScriptSerializer
. Это может Сериализовать фактические типы для вас в JSON:)
Ссылка: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
EDIT: Что-то вроде этого?
var columns = new Dictionary<string, string>
{
{ "FirstName", "Mathew"},
{ "Surname", "Thompson"},
{ "Gender", "Male"},
{ "SerializeMe", "GoOnThen"}
};
var jsSerializer = new JavaScriptSerializer();
var serialized = jsSerializer.Serialize(columns);
Вывод:
{"FirstName":"Mathew","Surname":"Thompson","Gender":"Male","SerializeMe":"GoOnThen"}
Ответ 3
Я нашел решение, очень похожее на DPeden, хотя нет необходимости использовать IDictionary, вы можете передать его непосредственно из ExpandoObject
в конвертер JSON:
dynamic foo = new ExpandoObject();
foo.Bar = "something";
foo.Test = true;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo);
и выход будет:
{"Bar":"something","Test":true}