JSON文件键值对添加

function add_json_if_not_exists(){
    is_empty=$( is_file_empty "$1" )
    if [ "$is_empty" == "true" ];then
        echo "empty"
        sed -i -e 'li{"'$2'":"'$3'"}\' "$1"
    else
        is_empty_json=$( is_file_empty_json "$1")
        if [[ "$is_empty_json" == "true" ]];then
            add_json_at_the_end "$1" "$2" "$3" "false"
        else
            is_exists=$( get_json_value "$1" "$2")
            if [ "$is_exists" != "$3"]; then
                add_json_at_the_end "$1" "$2" "$3" "true"
            fi
        fi
    fi
}
这个脚本函数 `add_json_if_not_exists` 的目的是向一个 JSON 文件中添加一个新的键值对,但仅当该键值对不存在时。

### 函数解释

1. **参数**:


   * `$1`: JSON 文件的路径。
   * `$2`: 要添加的键。
   * `$3`: 要添加的键对应的值。
2. **检查文件是否为空**:
is_empty=$( is_file_empty "$1" )
if [ "$is_empty" == "true" ];then
    echo "empty"
    sed -i -e 'li{"'$2'":"'$3'"}\' "$1"
   * 调用 `is_file_empty` 函数来检查文件是否为空。
   * 如果文件为空,使用 `sed` 命令在文件的第一行插入一个新的 JSON 键值对。
3. **文件不为空**:
else
    is_empty_json=$( is_file_empty_json "$1")
    if [[ "$is_empty_json" == "true" ]];then
        add_json_at_the_end "$1" "$2" "$3" "false"
    else
        is_exists=$( get_json_value "$1" "$2")
        if [ "$is_exists" != "$3"]; then
            add_json_at_the_end "$1" "$2" "$3" "true"
        fi
    fi
fi
   * 调用 `is_file_empty_json` 函数来检查文件是否为空的 JSON 文件。
   * 如果文件是一个空的 JSON 文件,则调用 `add_json_at_the_end` 函数(这个函数也没有在给出的代码段中定义)在文件的末尾添加一个新的 JSON 键值对。
   * 如果文件不是一个空的 JSON 文件,使用 `get_json_value` 函数(这个函数也没有在给出的代码段中定义)来获取当前键的值。
   * 如果该键的值与要添加的值不同,则再次调用 `add_json_at_the_end` 函数在文件的末尾添加一个新的 JSON 键值对。

### 举例说明

假设我们有以下 JSON 文件 `data.json`:
{
    "name": "John",
    "age": 30
}
现在我们想添加一个新的键值对 `"city": "New York"`,但仅当该键值对不存在时。

1. **文件为空或不是 JSON**:


   * 如果 `data.json` 是一个空文件或不是有效的 JSON 文件,`add_json_if_not_exists` 函数将在文件的第一行或末尾(取决于文件是否为空)添加新的键值对。
2. **文件包含键值对**:


   * 如果 `data.json` 已经是:
   json`{
       "name": "John",
       "age": 30,
       "city": "Los Angeles"
   }`
   * 调用 `add_json_if_not_exists` 函数并尝试添加 `"city": "New York"` 将不会有任何效果,因为该键值对已经存在。
3. **文件不包含键值对**:


   * 如果 `data.json` 是:
{
       "name": "John",
       "age": 30
}
   * 调用 `add_json_if_not_exists` 函数并尝试添加 `"city": "New York"` 将在文件的末尾添加新的键值对,得到:
   json`{
       "name": "John",
       "age": 30,
       "city": "New York"
   }`

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值