#题目 要求
Browse and modify a JSON data structure with ls
,cd
,cat
, add
, remove
#实现功能
Let's say we have this address entry data structure in JSON
{
"entries": {
"lilei" : {
"age": 27,
"mobile" : "13700000000",
"address" : "Earth somewhere"
},
"hanmeimei" : {
"age": 26,
"mobile" : "13700000001",
"address" : "Earth somewhere else"
}
}
}
start interactive command line application
sh> ./ab
ab> _
use ls
command to list the items in current position
ab> ls
ab> entries
use cd
command to go to the entry like go to a directory
ab> cd entries
ab> ls
ab> lilei hanmeimei
use cat
command to display th item data
ab> cat lilei
ab> "lilei" : { "age": 27, "mobile" : "13700000000", "address" : "Earth somewhere" }
use add
command to add new address entry to JSON
ab> cd entries
ab> add
key: xiaoming
value: { "age": 28, "mobile" : "13700000002", "address" : "Earth somewhere too" }
address entry added
ab> ls
ab> lilei hanmeimei xiaoming
Note: the key should be identical, if trying to add duplicated key, just display an error message
use remove
command to get one or more address entries
ab> cd entries
ab> remove
please give the key: xiaoming
xiaoming was deleted from JSON
Note: if trying to delete an non-exist key, just display an error message
get help
ab> !help
then help message should be displayed, and when encoutering invalid command, help message
should also be displayed.
quit from the application
ab> !quit
sh> _
该回答引用ChatGPT
这是一个比较大的项目,需要使用C++的一些基本操作,例如文件读写、字符串处理、JSON解析等,同时还需要实现一个命令行交互界面。以下是一个实现思路,可以供参考。
ls:列出当前位置的所有条目,如果当前位置是一个JSON对象,则列出其中的所有键;如果当前位置是一个JSON数组,则列出数组中的所有元素。
cd:进入到某个条目中,如果条目是一个JSON对象,则进入其中;如果条目是一个JSON数组,则进入其中的某个元素。
cat:查看当前位置的某个条目,输出该条目的完整JSON内容。
add:向当前位置的JSON对象中添加一个新的键值对。
remove:删除当前位置的某个键值对。
注意,这只是一个实现思路,具体实现过程可能会因为库的选择、具体需求等因素而有所不同。