Создайте 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}