Ala*_*sta 21 c# asp.net json json.net c#-4.0
我需要通过循环遍历列来动态创建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"};
Run Code Online (Sandbox Code Playgroud)
Dav*_*den 27
[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}
}
}
Run Code Online (Sandbox Code Playgroud)
mat*_*mmo 16
你应该使用JavaScriptSerializer.那可以将你的实际类型序列化为JSON :)
参考:http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
编辑:这样的事情?
var columns = new Dictionary<string, string>
{
{ "FirstName", "Mathew"},
{ "Surname", "Thompson"},
{ "Gender", "Male"},
{ "SerializeMe", "GoOnThen"}
};
var jsSerializer = new JavaScriptSerializer();
var serialized = jsSerializer.Serialize(columns);
Run Code Online (Sandbox Code Playgroud)
输出:
{"FirstName":"Mathew","Surname":"Thompson","Gender":"Male","SerializeMe":"GoOnThen"}
Run Code Online (Sandbox Code Playgroud)
ghi*_*ing 14
我发现了一个与DPeden非常相似的解决方案,虽然不需要使用IDictionary,但您可以直接从ExpandoObject一个JSON转换:
dynamic foo = new ExpandoObject();
foo.Bar = "something";
foo.Test = true;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo);
Run Code Online (Sandbox Code Playgroud)
并且输出变为:
{"Bar":"something","Test":true}
Run Code Online (Sandbox Code Playgroud)
And*_*rew 11
使用dynamic和JObject:
dynamic obj = new JObject();
obj.ProductName = "Elbow Grease";
obj.Enabled = true;
obj.StockCount = 9000;
Run Code Online (Sandbox Code Playgroud)
另一种分配属性的方法:
var obj = new JObject();
obj["ProductName"] = "Elbow Grease";
obj["Enabled"] = true;
obj["StockCount"] = 9000;
Run Code Online (Sandbox Code Playgroud)
或者使用JObject.FromObject:
JObject obj = JObject.FromObject(new
{
ProductName = "Elbow Grease",
Enabled = true,
StockCount = 9000
});
Run Code Online (Sandbox Code Playgroud)
它们都会产生这样的结果:
Console.WriteLine(obj.ToString());
// {
// "ProductName": "Elbow Grease",
// "Enabled": true,
// "StockCount": 9000
// }
Run Code Online (Sandbox Code Playgroud)
https://www.newtonsoft.com/json/help/html/CreateJsonDynamic.htm
| 归档时间: |
|
| 查看次数: |
47681 次 |
| 最近记录: |