C# C如何使用枚举标识符编写JSON
到目前为止,我正在编写一个将Excel转换为JSON的代码。 但我有一个问题,我需要在单词Match_u,Aka Match_u1,Match_u2,Match_u3之后对我正在写的每一行进行编号。 如果你看代码的结尾,我试着写下?但它给了我所有的匹配。。 如何使用Replace命令,以便在单词Match\之后实际放置相应的数字 IP=我要添加到句子中的另一个字符串。别理它 行[0]=从excel中的行中获取的文本 Match_u不是一个变量,它实际上是一个文本,我也可以在那里写Oded_u,然后它会在[0]行上写Oded_uu=IP字符串+excel文本 Match_u是我实际上试图从文本中替换的文本,因为我无法在链接查询中替换它 使用var conn=新的OleDbConnectionconnectionString { 康涅狄格开放大学; var cmd=conn.CreateCommand; cmd.CommandText=$SELECT*FROM[{sheetName}$]; 使用var rdr=cmd.ExecuteReader { 如果rdr!=null { //LINQ查询-执行时将为每行创建匿名对象 var query=rdr.Cast.Selectrow=>new { 匹配=IP+行[0] }; //从LINQ查询生成JSON var json=JsonConvert.SerializeObjectquery; //将文件写入目标路径 对于int i=1;i请尝试正则表达式C# C如何使用枚举标识符编写JSON,c#,json,excel,linq,replace,C#,Json,Excel,Linq,Replace,到目前为止,我正在编写一个将Excel转换为JSON的代码。 但我有一个问题,我需要在单词Match_u,Aka Match_u1,Match_u2,Match_u3之后对我正在写的每一行进行编号。 如果你看代码的结尾,我试着写下?但它给了我所有的匹配。。 如何使用Replace命令,以便在单词Match\之后实际放置相应的数字 IP=我要添加到句子中的另一个字符串。别理它 行[0]=从excel中的行中获取的文本 Match_u不是一个变量,它实际上是一个文本,我也可以在那里写Oded_u,然
class Program
{
int i = 0;
static void Main(string[] args)
{
string json = "match_ abc match_ def match_ hijmatch_";
string pattern = "match_";
Program p = new Program();
MatchEvaluator myEvaluator = new MatchEvaluator(p.ReplaceCC);
Regex r = new Regex(pattern);
string output = r.Replace(json, myEvaluator);
}
public string ReplaceCC(Match m)
// Replace each Regex cc match with the number of the occurrence.
{
i++;
return m.Value + i.ToString();
}
}
因此,分配查询后,查询是一个匿名类型的IEnumerable,它将有0到多行。这些行尚未实际计算。需要记住的重要一点是,您创建的是匿名类型,而不是匿名对象,因此结果的所有枚举都必须是该类型,您无法逐个切换
有很多方法可以实现您想要的结果,但最方便的方法可能是在select枚举器中包含迭代器,然后返回类似以下内容的
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
...
var query = rdr.Cast<DbDataRecord>().Select((row, i) => {
var result = new JObject();
result.Add( $"match_{i}", IP + row[0]);
return result;
});
什么是Match_uu和IP以及它们的定义位置?IP只是我添加到从Excel获取的行中的另一个字符串。如果您看到Match_u=IP+行[0],则Match_u是从linkQuery的位置获取的当转换为Json时,文本上的Match_uuu与文本上的Match_uuu基本相同。处理Json似乎很奇怪。Json描述列表,但索引是隐式的。您确定CSV这样的格式不适合您的用例吗?这是我的工作,因为我需要将Excels转换为Json,以提高工作效率,而不是手动执行。到目前为止一切都正常,它转换了我需要的所有内容和所有文本,除了那个讨厌的匹配,我需要在它后面加上数字。到目前为止,它把它写成。正确的文本=它正在做我需要它写的事,我只是不能发布它。对不起:P Match_uu=正确的文本匹配_u=正确的文本,我需要它作为匹配_u1=正确的文本text Match_2=correct textHi,我正在尝试这一个,但是我在add JsonObject上有一个错误,它不包含'add'@odedgross的定义。我更正了代码。很抱歉,我对编码还是有点陌生,现在我得到了关于.jsonvalue.pars意外字符'h'的错误。在第1行,第0列。我相信这是因为字符串IP=texticantshow因为它以h开头,每次我改变它时,它都会说一个未指定的字符,所以它有点像it@odedgross我彻底检查了我的答案非常感谢,我要试试这个!
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
public class Program
{
public static void Main()
{
var query = Enumerable
.Range(1,5)
.Select( (n, i) =>
{
var result = new JObject();
result.Add($"match_{i}", n);
return result;
});
Console.WriteLine(
JsonConvert.SerializeObject(
query,
Formatting.Indented));
}
}