以JSON格式打印出数组的第一个索引

时间:2014-09-17 22:04:12

标签: c# json rows

我要做的是以JSON格式打印出数组的第一个索引。

使用代码:

     storeInformation = myStoreInfoTable;
     strResponseOutput = JsonConvert.SerializeObject(storeInformation);

结果如下:

    [
        {
            "distance": 0,
            "descr": "Toronto",
            "address": "1300 Castlefield Avenue",
            "city": "Toronto"
        },
        {
            "distance": 7.1121883392,
            "descr": "Etobicoke - North",
            "address": "Resources Road",
            "city": "Etobicoke"
        }
    ]

我尝试做的第一个索引是:

    storeInformationRow = dtbStoreInformation.Rows[0];
    strResponseOutput = JsonConvert.SerializeObject(storeInformationRow);

我得到的是:

   {
        "RowError": "",
        "RowState": 2,
        "Table": [
            {
                 "distance": 0.0000000000,
                 "descr": "Toronto",
                 "address": "1300 Castlefield Avenue",
                 "city": "Toronto"
            },
            {
                "distance": 7.1121883392,
                "descr": "Etobicoke - North",
                "address": "Resources Road",
                "city": "Etobicoke"
            }
        ]
    }

我想要的结果只是

            {
                 "distance": 0.0000000000,
                 "descr": "Toronto",
                 "address": "1300 Castlefield Avenue",
                 "city": "Toronto"
            }

帮助任何人?

2 个答案:

答案 0 :(得分:0)

在我看来,JSON序列化程序正在搞砸,因为它不知道如何正确序列化DataRow。这是第一个和第二个代码片段之间的唯一区别。

如果您查看the MSDN documentation for the DataRow class,可以看到DataRow显示的属性(RowErrorRowStateTable)等等。< / p>

要解决您的问题,我建议使用以下两个选项之一:

  1. 创建一个新的DataTable并添加要序列化的DataRow,并在其上调用JsonConvert.SerializeObject()

  2. 将列(距离,描述符,地址和城市)映射到另一个类(Store或其他类)并尝试序列化该对象。从我所读的in the JsonConvert documentation可能(类属性正确映射到JSON对象)。

  3. 让我知道它是怎么回事!

答案 1 :(得分:0)

你可以使用:

var row = dtbStoreInformation.Rows [0];

string strResponseOutput = new {
                          distance = row[0].ToString(), 
                          descr= row[1].ToString(), 
                          address = row[2].ToString(),
                          city = row[2].ToString()}.ToJson(); 

不要忘记命名空间ServiceStack.Text

的包含

您还可以创建匿名对象

var obj = jsonString = new {
                              distance = row[0].ToString(), 
                              descr= row[1].ToString(), 
                              address = row[2].ToString(),
                              city = row[2].ToString()}

strResponseOutput = JsonConvert.SerializeObject(obj);