foreach循环中的String.Format用于在同一行中打印

时间:2018-01-17 11:05:09

标签: c# json string visual-studio format

我有一个函数,我用它读取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并不正确,还有另外一种方法吗?

谢谢

3 个答案:

答案 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());
            }
        }