将JSON字符串转换为数据表?

ai

在转换json字符串数据表时,值字段中的(,)值存在问题。

实际上我的json字符串是 [{"BNo":"345","GNo":"3453","FirstName":"fjai","LastName":"ljai","Address":"BARETI,CEVO, 13/2","Telephone":"051682247","BirthDate":"23-Jan-1981","Email":""}]

在那儿,请看一下地址方案 "Address":"BARETI,CEVO, 13/2"

在值字段中具有。将字符串转换为数据库时出现错误。这是我使用的代码将json字符串转换为datatable

public DataTable JsonStringToDataTbl(string jsonString)
{
    DataTable dt = new DataTable();
    string[] jsonStringArray = Regex.Split(jsonString.Replace("[", "").Replace("]", ""), "},{");
    List<string> ColumnsName = new List<string>();
    foreach (string jSA in jsonStringArray)
    {
        string[] jsonStringData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
        foreach (string ColumnsNameData in jsonStringData)
        {
            try
            {
                int idx = ColumnsNameData.IndexOf(":");
                string ColumnsNameString = ColumnsNameData.Substring(0, idx - 1).Replace("\"", "");
                if (!ColumnsName.Contains(ColumnsNameString))
                {
                    ColumnsName.Add(ColumnsNameString);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Error Parsing Column Name : {0}", ColumnsNameData));
            }
        }
        break;
    }
    foreach (string AddColumnName in ColumnsName)
    {
        dt.Columns.Add(AddColumnName);
    }
    foreach (string jSA in jsonStringArray)
    {
        string[] RowData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
        DataRow nr = dt.NewRow();
        foreach (string rowData in RowData)
        {
            try
            {
                int idx = rowData.IndexOf(":");
                string RowColumns = rowData.Substring(0, idx - 1).Replace("\"", "");
                string RowDataString = rowData.Substring(idx + 1).Replace("\"", "");
                nr[RowColumns] = RowDataString;
            }
            catch (Exception ex)
            {
                continue;
            }
        }
        dt.Rows.Add(nr);
    }
    return dt;
}

该代码必须在值字段中省略..我该怎么办

肯廷克

如果在读取时不知道您的密钥,则可以使用JSON.Net中的JObjectJProperty类来检索密钥及其值,如下所示:

private void printKeysAndValues(string json)
{
    var jobject = (JObject)((JArray)JsonConvert.DeserializeObject(json))[0];
    foreach (var jproperty in jobject.Properties())
    {
        Console.WriteLine("{0} - {1}", jproperty.Name, jproperty.Value);
    }
}

应用于两个不同的JSON输入字符串,检索键/值对:

var json1 = @"[{""BNo"":""345"",""GNo"":""3453"",""FirstName"":""fjai"",""LastName"":""ljai"",""Address"":""BARETI,CEVO, 13/2"",""Telephone"":""051682247"",""BirthDate"":""23-Jan-1981"",""Email"":""""}]";
var json2 = @"[{""Test"": ""A"", ""Text"":""some text"", ""Numbers"":""123""}]";
printKeysAndValues(json1);
Console.WriteLine("-------------------");
printKeysAndValues(json2);

输出为:

BNo - 345
GNo - 3453
FirstName - fjai
LastName - ljai
Address - BARETI,CEVO, 13/2
Telephone - 051682247
BirthDate - 23-Jan-1981
Email - 
-------------------
Test - A
Text - some text
Numbers - 123

一种可能性是使用dynamic关键字。您可以像这样直接访问该字段:

var json = @"[{""BNo"":""345"",""GNo"":""3453"",""FirstName"":""fjai"",""LastName"":""ljai"",""Address"":""BARETI,CEVO, 13/2"",""Telephone"":""051682247"",""BirthDate"":""23-Jan-1981"",""Email"":""""}]";
dynamic data = JsonConvert.DeserializeObject(json);
// take the first element of the array
string address = data[0].Address;
Console.WriteLine(address.Replace(",", " "));

输出为:

BARETI CEVO  13/2

请注意,String.Replace这不会失败,如果当前不存在应替换的符号,"test".Replace(",", " ");则将返回test

另一种可能性是使用ASP.NET中内置的JSON转换器(serializer / deserializer-NewtonSoft JSON.Net您可以使用它来重新获得结构化数据。您需要创建一个表示JSON结构的类:

public class Data
{
    public string BNo { get; set; }
    public string GNo { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string Telephones { get; set; }
    public string BirthDates { get; set; }
    public string Emails { get; set; }
}

然后,可以Data使用JsonConvert.DeserializeObject方法将当前JSON转换为类型的对象

var json = @"[{""BNo"":""345"",""GNo"":""3453"",""FirstName"":""fjai"",""LastName"":""ljai"",""Address"":""BARETI,CEVO, 13/2"",""Telephone"":""051682247"",""BirthDate"":""23-Jan-1981"",""Email"":""""}]";
// remove square braces [ and ] at the start resp. end
var data = JsonConvert.DeserializeObject<Data>(json.Substring(1).Substring(0, json.Length - 2));

现在您可以访问该Address字段,例如替换,符号:

Console.WriteLine(data.Address.Replace(",", " "));

输出为:

BARETI CEVO  13/2

我认为您的服务还会返回错误的JSON格式。JSON始终以对象开头(如果不是在JavaScript中,则该对象开头),这意味着顶层的所有内容都必须括在花括号{和中}如果服务应该返回一个数组,那么它应该看起来像这样{"results": [{"BNo":"...},{...}]}如果您无法更改服务,则可以修改/更正返回的字符串。为数组添加类型化的模型:

public class DataHolder
{
    public Data[] data { get; set; }
}

然后创建一个包含数组的正确JSON对象:

var data = JsonConvert.DeserializeObject<DataHolder>("{\"data\":" + json + "}");
Console.WriteLine(data.data[0].Address.Replace(",", " "));

输出再次相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将ModelForm数据转换为JSON字符串

来自分类Dev

如何使用json.net WCF Rest Service将数据表转换为json字符串输出

来自分类Dev

检查数据表的列中是否有任何行不能从整数转换为字符串

来自分类Dev

将列表转换为数据表

来自分类Dev

将日期时间从数据表转换为字符串C#ASP.NET的特定格式

来自分类Dev

如何将数据表值从整数转换为字符串

来自分类Dev

将R表转换为JSON字符串

来自分类Dev

将字符串转换为JSON

来自分类Dev

在数据表选择中将指数字符串转换为十进制

来自分类Dev

将具有动态数据的json字符串传递给primeNG数据表

来自分类Dev

将Json字符串转换为Windows 8的数据

来自分类Dev

将数据表值转换为字符串值数组

来自分类Dev

将列表转换为数据表

来自分类Dev

将JSON数据转换为数据表

来自分类Dev

如何使用json.net WCF Rest Service将数据表转换为json字符串输出

来自分类Dev

将Json文件API转换为MySQL数据表

来自分类Dev

数据表-将字符串转换为日期类型过滤器错误

来自分类Dev

如何将所有行值从数据表转换为字符串?

来自分类Dev

使用XML将字符串转换为数据表,列表还是更易于管理的东西?

来自分类Dev

如何将数据表转换为json

来自分类Dev

将字符串转换为JSON数据

来自分类Dev

将表格数据转换为JSON字符串

来自分类Dev

将数据表转换为用于amcharts的JSON字符串

来自分类Dev

itextSharp数据表转换为pdf base64字符串-pdf损坏

来自分类Dev

我如何将数据表日期转换为某种字符串格式

来自分类Dev

将日期从 JSON 转换为数据表

来自分类Dev

如何将数据表行转换为字符串

来自分类Dev

无法将 json 转换为数据集、数据表

来自分类Dev

将字符串数据从mysql表转换为java中的json列表

Related 相关文章

  1. 1

    将ModelForm数据转换为JSON字符串

  2. 2

    如何使用json.net WCF Rest Service将数据表转换为json字符串输出

  3. 3

    检查数据表的列中是否有任何行不能从整数转换为字符串

  4. 4

    将列表转换为数据表

  5. 5

    将日期时间从数据表转换为字符串C#ASP.NET的特定格式

  6. 6

    如何将数据表值从整数转换为字符串

  7. 7

    将R表转换为JSON字符串

  8. 8

    将字符串转换为JSON

  9. 9

    在数据表选择中将指数字符串转换为十进制

  10. 10

    将具有动态数据的json字符串传递给primeNG数据表

  11. 11

    将Json字符串转换为Windows 8的数据

  12. 12

    将数据表值转换为字符串值数组

  13. 13

    将列表转换为数据表

  14. 14

    将JSON数据转换为数据表

  15. 15

    如何使用json.net WCF Rest Service将数据表转换为json字符串输出

  16. 16

    将Json文件API转换为MySQL数据表

  17. 17

    数据表-将字符串转换为日期类型过滤器错误

  18. 18

    如何将所有行值从数据表转换为字符串?

  19. 19

    使用XML将字符串转换为数据表,列表还是更易于管理的东西?

  20. 20

    如何将数据表转换为json

  21. 21

    将字符串转换为JSON数据

  22. 22

    将表格数据转换为JSON字符串

  23. 23

    将数据表转换为用于amcharts的JSON字符串

  24. 24

    itextSharp数据表转换为pdf base64字符串-pdf损坏

  25. 25

    我如何将数据表日期转换为某种字符串格式

  26. 26

    将日期从 JSON 转换为数据表

  27. 27

    如何将数据表行转换为字符串

  28. 28

    无法将 json 转换为数据集、数据表

  29. 29

    将字符串数据从mysql表转换为java中的json列表

热门标签

归档