我试图将结构更改为在向量中具有bool值。 split方法将“ ###”行分开,并且文本文件中包含对或错的语句。
[代码]
$ mysqlsh --sql
MySQL Shell 8.0.16
Your MySQL connection id is 2 (X protocol)
Server version: 5.7.26 MySQL Community Server (GPL)
No default schema selected; type \use <schema> to set one.
MySQL 127.0.0.1:15726+ SQL > SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.26 |
+-----------+
1 row in set (0.0004 sec)
MySQL 127.0.0.1:15726+ SQL > SELECT `id`, `json_data`
-> FROM `test`.`example_table`\G
*************************** 1. row ***************************
id: 1
json_data: {"price": null, "sale_list": [{"id": "1234", "date": "April 29th 2019 21:20:50", "buyer": "SmackMe089", "item_desc": ""}]}
1 row in set (0.00 sec)
MySQL 127.0.0.1:15726+ SQL > \js
Switching to JavaScript mode...
MySQL 127.0.0.1:15726+ JS > util.importJson('/path/to/file/sample.json', {schema: 'test', table: 'example_table', tableColumn: 'json_data'});
Importing from file "/path/to/file/sample.json" to table `test`.`example_table` in MySQL Server at 127.0.0.1:15726
.. 1.. 1
Processed 204 bytes in 1 document in 0.0007 sec (1.36K documents/s)
Total successfully imported documents 1 (1.36K documents/s)
MySQL 127.0.0.1:15726+ JS > \sql
Switching to SQL mode... Commands end with ;
MySQL 127.0.0.1:15726+ SQL > SELECT `id`, `json_data`
-> FROM `test`.`example_table`\G
*************************** 1. row ***************************
id: 1
json_data: {"price": null, "sale_list": [{"id": "1234", "date": "April 29th 2019 21:20:50", "buyer": "SmackMe089", "item_desc": ""}]}
1 row in set (0.0007 sec)
*************************** 2. row ***************************
id: 2
json_data: {"price": null, "sale_list": [{"id": "1234", "date": "April 29th 2019 21:20:50", "buyer": "SmackMe089", "item_desc": ""}]}
2 rows in set (0.0006 sec)
从文本文件,标题,作者,类型,布尔语句中读取并将向量添加到列表中。然后,我会使用随机方法来挑选一本可用的随机书。
答案 0 :(得分:1)
我是否假设您在尝试将string
转换为bool
到此行时遇到错误?
Biblotek.Add(new Novellsamling(vektor[0], vektor[1], vektor[2], vektor[3]));
构造函数期望bool
。但是vektor[3]
是string
。假设可以将输入数据 解析为bool
,则必须对其进行解析。像这样:
var inne = false;
bool.TryParse(vektor[3], out inne);
Biblotek.Add(new Novellsamling(vektor[0], vektor[1], vektor[2], inne));
请注意,这不会执行任何错误检查。如果该值无法解析,它将以默认值false
静默继续。要处理该错误,请检查TryParse
的返回值:
var inne = false;
if (!bool.TryParse(vektor[3], out inne))
{
// parsing failed, handle the error here
}
else
Biblotek.Add(new Novellsamling(vektor[0], vektor[1], vektor[2], inne));
如果不能直接解析值 ,那么值是什么?例如,您可能具有文本值“ Y”和“ N”。在这种情况下,您可以进行自己的临时解析,例如:
var inne = vektor[3] == "Y";
Biblotek.Add(new Novellsamling(vektor[0], vektor[1], vektor[2], inne));
如何根据字符串值定义真/假值的逻辑以及如何处理与逻辑不直接匹配的值的逻辑由您决定。 (使用默认值,引发错误等)。但是最终,您需要从bool
派生一个string
并将其传递给构造函数。
此外,此方法是一个错误,但也是不必要的,应完全删除:
public bool ToString(bool inne)
{
return inne;
}
真正的ToString
方法需要进行简单的校正才能构建返回的字符串:
public override string ToString()
{
return title + " " + author + " " + typ + " " + inne.ToString();
}
甚至更好:
public override string ToString()
{
return $"{title} {author} {typ} {inne}";
}