如何解析此非Json数据[已关闭]

vltsax25  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(182)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我的数据看起来像这样....我如何在C# .NET中解析它

[
    [
        WALLET_TYPE,
        CURRENCY,
        BALANCE,
        UNSETTLED_INTEREST,
        AVAILABLE_BALANCE,
        LAST_CHANGE,
        TRADE_DETAILS
    ],
    [
        WALLET_TYPE,
        CURRENCY,
        BALANCE,
        UNSETTLED_INTEREST,
        AVAILABLE_BALANCE,
        LAST_CHANGE,
        TRADE_DETAILS
    ]
]

请注意,里面可以有N个记录.....我只显示了2。如果这是Json,我会很好,但这不是json,我怎么能在C#中做它的正确方式是整洁和干净.....
这是一个字符串,而不是一个数组,等等.....那么我如何解析这个字符串呢?
我已经尝试了Json解析,CSV解析,配置文件解析,配置文件解析,INI文件解析,这似乎不是在所有。我是新的编程。请帮助

6jygbczu

6jygbczu1#

使用一些正则表达式,我们可以将数据转换为有效的JSON,假设数据与提供的一样。

const string data = "[[WALLET_TYPE,CURRENCY,BALANCE,UNSETTLED_INTEREST,AVAILABLE_BALANCE,LAST_CHANGE,TRADE_DETAILS],[WALLET_TYPE,CURRENCY,BALANCE,UNSETTLED_INTEREST,AVAILABLE_BALANCE,LAST_CHANGE,TRADE_DETAILS]]";

//Using Regex we can wrap all UPPERCASE_WORDS with "'s making it valid JSON
var jsonData = Regex.Replace(data, "([A-Z_]+)", "\"$&\"");
var parsedData = JsonConvert.DeserializeObject<List<List<string>>>(jsonData);

现在您有了一个有效的List of List。
下面是regex 101 https://regex101.com/r/xoc7MK/1中的相同数据/正则表达式

Edit假设每个数组中始终有7个项目:

const string data = "[[WALLET_TYPE,CURRENCY,BALANCE,UNSETTLED_INTEREST,AVAILABLE_BALANCE,LAST_CHANGE,TRADE_DETAILS],[WALLET_TYPE,CURRENCY,BALANCE,UNSETTLED_INTEREST,AVAILABLE_BALANCE,LAST_CHANGE,TRADE_DETAILS]]";

//Remove all but Letters, Numbers, Commas, Underscores and punctuations 
var dataCsv = Regex.Replace(data, "[^a-zA-Z0-9_.,]", "");
var items = dataCsv.Split(',');

List<List<string>> itemsList = new List<List<string>>();
for(int i = 0; i < items.Length; i += 7) {
    itemsList.Add(new List<string>(items.Skip(i).Take(7)));
}

相关问题