英文:
Golang converting string to individual json values and not a list, similar to json.loads in python
问题
抱歉,我只能为您提供翻译服务,无法执行代码或返回翻译后的代码。以下是您提供的内容的翻译:
对于这个初学者问题我感到抱歉。
我正在尝试将一个字符串转换为JSON。该字符串已经是JSON格式的,例如:
{ "system1": "Service 1", "System2": "Service2" }
或者
{ "system1": "Service 1", "device": "Service 10", "Something": "port 22" }
等等。这些键值对的数量在编译时是未知的,只有在运行时才知道。
我能够将其加载到一个结构体中,使用预定义的固定键名,但由于键的数量是变化的,我在生成与字符串结构相对应的JSON时遇到了困难。
我不想将其推送到 string : []map[string]string
,我的目标是像Python的 json.loads
一样单独生成键值对(不喜欢 string : []map[string]string
,因为要从中获取一个元素,我必须迭代它,这需要 O(n)
的时间,但由于键在运行时是已知的,而不是一个列表,我可以直接调用它,如 if value.Key
。如果我理解错了,请纠正我。)
我在Python中可以这样做:
>>> a = { "system1": "Service 1", "System2": "Service2" }
>>> b = json.loads(a)
>>> b
{'system1': 'Service 1', 'System2': 'Service2'}
我可以像这样访问元素:
b['system1']
而无需迭代b,因为它不是一个切片。
感谢您的指导。
谢谢,
Scott.
英文:
Apologies for this noob question.
I am trying to convert a string to json. The string is already in json format like
{ "system1": "Service 1", "System2": "Service2" }
or
{ "system1": "Service 1", "device": "Service 10", "Something": "port 22" }
and so on. The number of this key-value pair is not known at compile time, and is known only at the runtime.
I am able to load it to a struct, with predefined fixed keynames, but since the number of keys are varying, I am stuck at generating a json with respect to the structure of the string.
I am not looking for pushing it to a string : []map[string]string
and my aim is to generate individually generate the key-value pair similar to python's json.loads
on the string (Not prefering string : []map[string]string
because to get an element out of it, I have to iterate over it, which takes O(n)
time, but since the keys are known in runtime, and not a list, I could directly call it as if value.Key
. Please correct me if I am wrong.)
The way I could do it with python was,
>>> a = { "system1": "Service 1", "System2": "Service2" }
>>> b = json.loads(a)
>>> b
{u'system1': u'Service 1', u'System2': u'Service2'}
and I could access elements as
b['system1']
without iterating over b, because it is not a slice.
Any guidance is appreciated.
Thanks,
Scott.
答案1
得分: 2
你可以使用unmarshal
将字符串解析为map[string]interface{}
类型。
例如,https://play.golang.org/p/fjgg0iQgV1 中的示例代码。
英文:
You can use unmarshal the string in a map[string]interface{}.
For example https://play.golang.org/p/fjgg0iQgV1
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论