开发者社区 问答 正文

如何使用Newtonsoft读取单个json上的多个json内容?

我有一个名为29-6-19.json的json文件“ [{“ 1_2.jpg”:{“ aaa”:“”,“ bbb”:“ sinu”,“ Reg”:“”,“ Email”:“ “,” Tel_1“:” 0129-241484“,” Tel_2“:” 123456789“,” Url“:”“,” Degree“:” RCT,BK“,” Add“:”“,” Pincode“:”“ }},{“ 2_4.jpg”:{“名称”:“”,“代码”:“ 408250”,“注册”:“”,“电子邮件”:“”,“电话”:“”,“网址” :“”,“ Degree”:“”,“ Add”:“”,“ Pincode”:“”}},}}]]“

-我想将其拆分并以aaa =“”,bbb =“ sinu”的形式保存到数据库,并且也这样“ Degree”:“ RCT,BK”值具有','以及如何拆分和保存...

我没有这个 var strjson = File.ReadAllText(path); 已解析的JObject = JObject.Parse(strjson); 但是在解析其显示错误时

展开
收起
几许相思几点泪 2019-12-16 20:16:27 664 分享 版权
阿里云 AI 助理回答

根据您提供的JSON文件内容,它似乎格式不正确,有多余的逗号和未闭合的大括号。首先,您需要确保您的JSON文件格式正确。正确的格式应该如下所示:

[
  {
    "1_2.jpg": {
      "aaa": "",
      "bbb": "sinu",
      "Reg": "",
      "Email": "",
      "Tel_1": "0129-241484",
      "Tel_2": "123456789",
      "Url": "",
      "Degree": "RCT,BK",
      "Add": "",
      "Pincode": ""
    }
  },
  {
    "2_4.jpg": {
      "名称": "",
      "代码": "408250",
      "注册": "",
      "电子邮件": "",
      "电话": "",
      "网址": "",
      "Degree": "",
      "Add": "",
      "Pincode": ""
    }
  }
]

一旦您的JSON文件格式正确,您可以使用C#代码来读取并解析这个文件,然后将数据保存到数据库中。如果您使用的是阿里云的RDS(关系型数据库服务)或其他支持SQL的数据库,以下是一个简单的示例,说明如何进行操作:

  1. 安装NuGet包: 确保您的项目中已经安装了Newtonsoft.Json,这是处理JSON的一个流行库。

  2. 读取并解析JSON:

using Newtonsoft.Json;
using System.IO;

string path = @"路径\29-6-19.json";
string strJson = File.ReadAllText(path);
JArray jsonArray = JArray.Parse(strJson); // 使用JArray因为顶层是一个数组
  1. 遍历JSON并保存到数据库:

这里假设您使用ADO.NET连接到数据库,且数据库表结构与JSON中的键相对应。如果您的"Degree"字段可能包含逗号分隔的值,并且您希望在数据库中分别存储这些值,可以进一步处理。

using System.Data.SqlClient; // 或其他数据库对应的命名空间

string connectionString = "您的数据库连接字符串";

foreach (JToken item in jsonArray)
{
    foreach (JProperty prop in item.Children<JProperty>())
    {
        JObject details = (JObject)prop.Value;
        
        string aaa = details["aaa"].ToString();
        string bbb = details["bbb"].ToString();
        string degree = details["Degree"].ToString(); // 假设要处理逗号分隔的Degree
        
        // 处理Degree,如果有逗号分隔,拆分为列表
        List<string> degrees = degree.Split(',').ToList();
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            // 假设有一个存储过程SaveDetails接受这些参数
            SqlCommand command = new SqlCommand("SaveDetails", connection);
            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.AddWithValue("@aaa", aaa);
            command.Parameters.AddWithValue("@bbb", bbb);

            // 对于Degree,如果需要分开存储,可能需要多次调用存储过程或使用批量插入
            foreach (var deg in degrees)
            {
                command.Parameters["@Degree"].Value = deg;
                command.ExecuteNonQuery();
            }

            // 其他字段类似添加...

            connection.Close();
        }
    }
}

请注意,上述代码仅为示例,实际应用时您需要根据自己的数据库表结构、字段类型以及是否允许在单个字段中存储多个值(如"Degree"字段)来调整。如果"Degree"字段在数据库中需要拆分存储为多行,您可能需要设计一个更复杂的逻辑或者直接在数据库层面处理这些数据。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答