这是一个非常简单的问题,我无法在此处找到与我的问题相关的解决方案。
给出以下单个对象
Foo foo = new Foo
{
A = "Tom",
B = "Mark",
C = "Paul",
D = "John"
};
我需要以下输出:
汤姆,马克,保罗,约翰
使用以下方法序列化对象时:
string s = JsonConvert.SerializeObject(foo);
我得到以下信息:
{A =“汤姆”,B =“马克”,C =“保罗”,D =“约翰”}
注意:这不是列表,仅列出该类的一个实例。
我知道我可以通过覆盖类中的字符串来实现这一点,但是我想知道是否有更简单的方法来做到这一点?
答案 0 :(得分:1)
您可以为该类覆盖ToString
,只需将foo
转换为string
即可:
public class Foo
{
public string A = string.Empty;
public string B = string.Empty;
public string C = string.Empty;
public string D = string.Empty;
public override string ToString()
{
return A + "," + B + "," + C + "," + D;
}
}
Foo foo = new Foo
{
A = "Tom",
B = "Mark",
C = "Paul",
D = "John"
};
string s = foo.ToString();
答案 1 :(得分:0)
如果您不介意四处走走,可以将对象序列化为JSON,然后将其反序列化为字典,然后提取字典的值以获取简单的字符串列表。
string s = JsonConvert.SerializeObject(obj);
Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
List<string> propertyValues = dictionary.Values.toList();
string myOvercomplicatedString = String.Join(',', propertyValues);
我前面没有任何C#工具,因此这可能无法完美运行,但是您应该能够使其轻松工作。这不是一个很好的解决方案-我绝对希望定义一个直接将它们拉在一起或覆盖ToString
的方法-但是如果您决定避免这种情况,那么遵循这些思路的解决方案将行得通。