mdo*_*wes 22 c# tuples json.net valuetuple
在尝试将命名值元组序列化为JSON字符串时,它会丢失分配给项目的名称
(string type, string text) myTypes = ("A", "I am an animal");
var cnvValue = JsonConvert.SerializeObject(myTypes);
Run Code Online (Sandbox Code Playgroud)
我期待序列化值为
{"type":"A","text":"我是动物"}
但实际结果是
{"Item1":"A","Item2":"我是动物"}
我有兴趣知道两件事
Cai*_*ard 19
如何获得预期的输出
像这样的东西:
var myTypes = new{ type = "A", text = "I am an animal"};
var cnvValue = JsonConvert.SerializeObject(myTypes);
Run Code Online (Sandbox Code Playgroud)
如果你正在寻找一个类似的简洁方法,应该工作.ValueTuple虽然不在引擎盖下使用s(但是匿名类型); 这是我将你的问题解释为"如何在不完全声明类等的情况下生成这个预期的JSON"
Dam*_*ver 15
名称是编译器技巧.如果你看一下定义ValueTuple,你会看到它的字段名称只是Item1,Item2等等.
由于JsonConvert.SerializeObject编译以及你分配你可以使用在名之前的汇编,它不能恢复的名字.
方法参数/返回类型使用属性进行修饰,这些属性指示方法的签名包含ValueTuples 时要使用的名称.这允许稍后编写的代码再次通过编译器"看到"名称,但这是"错误的方法",在这里有很多用处.
如何获得预期的输出
如果字段/属性的名称如此重要,则引入显式类型.
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |