|
|
@@ -631,10 +631,16 @@ function validateAndFixJSON(jsonString) {
|
|
631
|
631
|
|
|
632
|
632
|
/**
|
|
633
|
633
|
* 标准化文章字段,将修正版本的内容应用到标准字段中
|
|
634
|
|
- * @param {Object} json - 包含文章内容的JSON对象
|
|
635
|
|
- * @returns {Object} - 返回标准化后的JSON对象
|
|
|
634
|
+ * @param {string|Object} jsonInput - 包含文章内容的JSON字符串或对象
|
|
|
635
|
+ * @returns {string|Object} - 返回标准化后的JSON字符串或对象,与输入类型保持一致
|
|
636
|
636
|
*/
|
|
637
|
|
-function normalizeArticleFields(json) {
|
|
|
637
|
+function normalizeArticleFields(jsonInput) {
|
|
|
638
|
+ // 判断输入是字符串还是对象
|
|
|
639
|
+ const isString = typeof jsonInput === 'string';
|
|
|
640
|
+
|
|
|
641
|
+ // 如果是字符串,先解析为对象
|
|
|
642
|
+ let json = isString ? JSON.parse(jsonInput) : jsonInput;
|
|
|
643
|
+
|
|
638
|
644
|
if (json.ArticleEnglishCorrected){
|
|
639
|
645
|
json.ArticleEnglish=json.ArticleEnglishCorrected;
|
|
640
|
646
|
delete json.ArticleEnglishCorrected;
|
|
|
@@ -643,7 +649,40 @@ function normalizeArticleFields(json) {
|
|
643
|
649
|
json.ArticleChinese=json.ArticleChineseCorrected;
|
|
644
|
650
|
delete json.ArticleChineseCorrected;
|
|
645
|
651
|
}
|
|
646
|
|
- return json;
|
|
|
652
|
+
|
|
|
653
|
+ // 确保ArticleEnglish数组中只包含英文句子,ArticleChinese数组中只包含中文句子
|
|
|
654
|
+ if (json.ArticleEnglish && Array.isArray(json.ArticleEnglish)) {
|
|
|
655
|
+ const englishSentences = [];
|
|
|
656
|
+ const chineseSentences = [];
|
|
|
657
|
+
|
|
|
658
|
+ // 遍历ArticleEnglish数组,分离英文和中文句子
|
|
|
659
|
+ json.ArticleEnglish.forEach(sentence => {
|
|
|
660
|
+ // 检查句子是否包含中文字符
|
|
|
661
|
+ if (/[\u4e00-\u9fa5]/.test(sentence)) {
|
|
|
662
|
+ chineseSentences.push(sentence);
|
|
|
663
|
+ } else {
|
|
|
664
|
+ englishSentences.push(sentence);
|
|
|
665
|
+ }
|
|
|
666
|
+ });
|
|
|
667
|
+
|
|
|
668
|
+ // 更新ArticleEnglish数组,只保留英文句子
|
|
|
669
|
+ json.ArticleEnglish = englishSentences;
|
|
|
670
|
+
|
|
|
671
|
+ // 如果ArticleChinese不存在或不是数组,则创建它
|
|
|
672
|
+ if (!json.ArticleChinese || !Array.isArray(json.ArticleChinese)) {
|
|
|
673
|
+ json.ArticleChinese = [];
|
|
|
674
|
+ }
|
|
|
675
|
+
|
|
|
676
|
+ // 将中文句子添加到ArticleChinese数组中
|
|
|
677
|
+ chineseSentences.forEach(sentence => {
|
|
|
678
|
+ if (!json.ArticleChinese.includes(sentence)) {
|
|
|
679
|
+ json.ArticleChinese.push(sentence);
|
|
|
680
|
+ }
|
|
|
681
|
+ });
|
|
|
682
|
+ }
|
|
|
683
|
+
|
|
|
684
|
+ // 根据输入类型返回相应的结果
|
|
|
685
|
+ return isString ? JSON.stringify(json) : json;
|
|
647
|
686
|
}
|
|
648
|
687
|
|
|
649
|
688
|
// 默认导出,保持向后兼容性
|