gpt4 book ai didi

c# - 读取 MySQL JSON 数据类型并将其转换为 C# 中的 List

转载 作者:行者123 更新时间:2023-11-29 16:05:11 25 4
gpt4 key购买 nike

我试图从 mysql 数据库返回一个数字列表,该数据库的表中有 JSON 数据类型。

c# 中的 mysql.connector 认为数据类型是 VARCHAR,所以基本上我从数据库得到返回“[1, 2, 3]”。

我需要将字符串 return 转换为 List<INT> 以便我可以直接使用它。

更具体地说,这是我从 mysql reader 得到的

string mylist = "[1, 2, 3]"

我想把它转换到

List<Int> mylist_int = [1, 2, 3]

因此,如果有一种方法可以直接以 JSON 格式从数据库读取 JSON 数据类型,那就太好了。

或者,我正在寻找一种方法来解析字符串列表并将其转换为 C# native 列表。

谢谢,

最佳答案

使用像 JSON.NET 这样的 JSON 解析器解析 JSON 字符串,例如:

var json=reader.GetString(0);
//Returns a List<int>
var myList=JsonConvert.DeserializeObject<List<int>>(json);

var jsonArray=JArray.Parse(json);

MySQL 连接器 explicitly treats JSON as a string ,它不会“认为”它们是文本:

    case MySqlDbType.Set:
case MySqlDbType.Enum:
case MySqlDbType.String:
case MySqlDbType.VarString:
case MySqlDbType.VarChar:
case MySqlDbType.Text:
case MySqlDbType.TinyText:
case MySqlDbType.MediumText:
case MySqlDbType.LongText:
case MySqlDbType.JSON:
case (MySqlDbType)Field_Type.NULL:
return new MySqlString(type, true);

图书馆自己的tests use GetString() to read JSON data :

[Fact]
public void CanReadJsonValue()
{
...
using (MySqlDataReader reader = cmd.ExecuteReader())
{
Assert.True(reader.Read());
Assert.Equal("[\"a\", {\"b\": [true, false]}, [10, 20]]", reader.GetString(0));
}
}

关于c# - 读取 MySQL JSON 数据类型并将其转换为 C# 中的 List<Int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55813021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com