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

本文关键字:第一个 索引 数组 JSON 格式 式打印 | 更新日期: 2023-09-27 18:22:12

我要做的是以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"
            }

帮谁?

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

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

如果查看DataRow类的MSDN文档,您可以看到DataRow具有显示的属性(RowErrorRowStateTable)以及其他许多属性。

为了解决你的问题,我建议两个选项之一:

  1. 创建一个新的DataTable,并将要序列化的DataRow添加到其中,然后调用JsonConvert.SerializeObject()

  2. 将列(distance、descr、address&city)映射到另一个类(Store或其他什么),并尝试序列化该对象。根据我在JsonConvert文档中读到的内容,这是可能的(类属性被正确映射到JSON对象上)。

让我知道进展如何!

您只需使用:

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);