json 是否有一种数据序列化语言(或程序/编辑器)没有重复的属性名称?

ctrmrzij  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(103)

所以我正在写一个程序(一个我自己的娱乐程序,通常都是这样)。仍然没有我想做的那么好*长话短说无论如何,我第一次尝试使用外部配置文件,而不是让变量散落在整个源代码中(Python,所以不难修改,只需要你的好朋友Ctrl+F)。
我主要研究JSON,但对象有多个值(所以我不能只使用键:值对)我需要为每个条目写字段名,这很烦人。一些演示数据(即不是配置文件):

{
  "people": [
    {"first": "John", "second": "Smith", "age": 34},
    {"first": "Jane", "second": "Doe", "age": 40},
    {"first": "Fred", "second": "Blogs", "age": 56}
    ]
}

当我添加更多的人时,这真的很烦人。我知道这是为了可读性,但它增加了我的工作量。
我们还看了YAML,但基本问题仍然相同:

---
people:
- first: John
  second: Smith
  age: 34
- first: Jane
  second: Doe
  age: 40
- first: Fred
  second: Blogs
  age: 56

我能想到的最简单的解决方案就是把值放在一个没有名字的数组中,然后在程序中通过迭代数组来赋值,但这违背了可读性的目的。(注意:只是我脑海中的代码,所以希望它是正确的代码)

  • 人们.杰森:*
{
  "people": [
    ["John", "Smith", 34],
    ["Jane", "Doe", 40],
    ["Fred", "Blogs", 56]
    ]
}
  • 人民。py:*
import json

class person:
    def __init__(self, first, second, age):
        self.first = first
        self.second = second
        self.age = age

people_file = open("people.json", "r")
people_data = json.load(people_file)

all_people = list()
for each_person in people_data["people"]:
    new_person = person(each_person[0], each_person[1], each_person[2])
    all_people.append(new_person)

我认为GFM处理表格的方式会很好,但是我不知道有什么语言支持它(我知道如果我把它排列起来会更漂亮)。

|first|second|age|
|-----|------|---|
|John|Smith|34|
|Jane|Doe|40|
|Fred|Blogs|56|

嗯......我希望人们能提出一个问题。我是不是漏掉了什么,一门语言(或者是编辑器或其他什么的),我不需要重复自己这么多?我知道“容易”可能是一个CSV文件(虽然我可能会遇到必须转义几个特殊字符的冲突,正如我在开头段落中3英里以上所说,这是一个配置文件,但人是一个更容易的例子),但这违背了把我所有的设置都放在一个地方的目的。

unhi4e5o

unhi4e5o1#

YAML与JSON不同,它有注解,所以这样就可以了:

people:
  #   first, second, age
  - [ John , Smith , 34 ]
  - [ Jane , Doe   , 40 ]
  - [ Fred , Blogs , 56 ]

相关问题