我有一个函数,我用它读取Json并反序列化它。 JSON是嵌套的,我想要的是在同一行中打印一些嵌套值。
我的JSON就是:
{
"number": 123,
"person": [{
"phone": 864556,
"name": "John D",
"address": "N.Y",
"email": "test@test.com"
},
{
"phone": 19845,
"name": "Mary S",
"address": "N.Y",
"email": "testmary@test.com"
},
{
"phone": 34936,
"name": "Alex N",
"address": "Santiago",
"email": "alex@test.com"
},
{
"phone": 197478,
"name": "Bill McK",
"address": "London",
"email": "test@example.com"
}]
}
我有这个
foreach (var num in JMain.person)
{
debugOutput(String.Format("<{0};>", num.phone));
}
private void debugOutput(string strDebugText)
{
try
{
outPut += strDebugText + Environment.NewLine;
System.Diagnostics.Debug.Write(strDebugText + Environment.NewLine);
}
catch(Exception ex)
{
System.Diagnostics.Debug.Write(ex.Message.ToString() + Environment.NewLine);
}
}
其中debugOutput是我读取JSON并打印它的函数。我想要的是在一行中打印所有手机。使用for循环和String.Format,我可以将它们打印到另一个。也许使用String.Format并不正确,还有另外一种方法吗?
谢谢
答案 0 :(得分:2)
如果您想从多个部分制作一个string
,请使用string.Join
:
var phones = string.Join("", JMain.person.Select(num => string.Format("<{0};>", num.phone));
Join
的第一个参数是分隔符。如果您不希望单个格式化字符串之间有任何分隔,请使用""
。
以上内容取代了您的foreach
循环。使用
phones
debugOutput(phones);
答案 1 :(得分:1)
如果你想要一个字符串中的所有输出,你可以这样做。根据debugOutput函数中的内容,可能会有更简单的方法。
attempt to call a nil value (method 'save')
attempt to index a nil value (global 'self')
答案 2 :(得分:0)
其他答案有效,但对于您的代码,问题是您使用NewLine:
private void debugOutput(string strDebugText)
{
try
{
System.Diagnostics.Debug.Write(strDebugText);
}
catch(Exception ex)
{
System.Diagnostics.Debug.Write(ex.Message.ToString());
}
}