我需要找到一种方法用golang将表转换为JSON。
State Version Support eRSTP Enhancements Bridge Priority Hello Time Max Age Time Transmit Count Forward Delay Max Hops Cost Style BPDU Guard Timeout VersionForSNMP
Disabled RSTP On 0 2 s 20 s 32 15 s 20 STP (16 bit) Don't shutdown RSTP
拆分列很简单,拆分就足够了。但是请注意,在值中没有分隔模式,有时它是一个空格,有时是一个制表符,有时字段是空的。是否有任何方法可以“解析”这个表,以便每个值都进入相应的字段?
我希望这样的事情
[{“状态”:“已禁用”,“版本”:“RSTP”,.}]
2条答案
按热度按时间bihw5rsg1#
第一个问题是,它甚至不确定列标题是什么?例如,它可以是
State
:禁用,Version Support
:RSTP(或Version
:RSTP和Support
:[空]?),eRSTP Enhancements
:打开(或eRSTP
:关于Enhancements
:[空]?),Bridge Priority
:0,Hello Time
:2秒,Max Age Time
:20秒,Transmit Count
:32,Forward Delay
:15秒,Max Hops
:第20章首先,你要澄清除此之外,我无法给予你一个明确的答案,只能给出一些想法:
State
始终是一个字符串(可能有一组有限的值)。)、Version
(或Version Support
?)相同,eRSTP
(或eRSTP Enhancements
?)可能只是“On”或“Off”,Bridge Priority
总是数字,Hello Time
是数字后跟“s”等。这样,即使某些字段为空,您也可以确定字段属于哪一列。yqlxgs2m2#
这是一个有趣的问题,我认为它可以用下面的算法来解决:
1.将头和数据看作两个长度相等的字符串
1.从两个字符串的末尾开始迭代
1.查找
headers[i - 1] == " " && headers[i] != " " && data[i - 1] == " " && data [i] != " "
所在的所有索引一旦我们找到了这些索引,我们就可以使用它们来提取子字符串。
这基本上是一个大小为2x2的滑动窗口。
在第一次迭代中:
在第二次迭代中:
等等。现在,让我们在Go中实现它:
我们现在所拥有的都是满足我们要求的指标。剩下的就是使用这些索引解析每一行。
现在,还不清楚您是否希望始终只有两行作为输入。但我相信从
[][]string
转换到您喜欢的JSON输出应该相当容易。正如@rob74正确提到的,我们实际上没有您的域的上下文。例如,我的代码的输出是:
但我不知道“eRSTP Enhancements”是否是该列的正确名称,或者这是两个列,“eRSTP”值为“On”,“Enhancements”值为“"。这是你必须解决的问题