我正在尝试将仅包含字符串属性的平面对象序列化为JSON。 我得到的是:
var _ = require('lodash');
// update user
router.put('/:id', function (req, res, next) {
// fetch user
User.findById(req.params.id, function(err, post) {
if (err) return next(err);
_.assign(post, req.body); // update user
post.save(function(err) {
if (err) return next(err);
return res.json(200, post);
})
});
});
我需要的是
{
"Inputs": {
"prop1": "value1",
"prop2": "value2"
}
}
我的第一个想法是编写一个自定义转换器,该转换器将对象首先转换为字典(基于https://stackoverflow.com/a/4944547/9806449),然后迭代键以将其构建为所需的格式,但是感觉必须存在让我望而却步的更简单的解决方案。
有什么想法吗? 谢谢!
答案 0 :(得分:1)
如果我理解正确。这是基本的序列化。您想使用键,值对序列化对象。
public class Obj
{
public Obj(string key, string value)
{
Key = key;
Value = value;
}
public string Key { get; set; }
public string Value { get; set; }
}
主要
static void Main(string[] args)
{
var response = new Dictionary<string, List<Obj>>();
var inputObjs = new List<Obj>();
inputObjs.Add(new Obj("prop1", "value1"));
inputObjs.Add(new Obj("prop2", "value2"));
response.Add("Inputs", inputObjs);
var serializedObj = JsonConvert.SerializeObject(response);
Console.ReadKey();
}
我使用Newtonsoft来序列化对象
您将获得此结果,
{
"Inputs": [{
"key": "prop1",
"value": "value1"
},
{
"key": "prop2",
"value": "value2"
}
]
}