| Crates.io | i_edit_json |
| lib.rs | i_edit_json |
| version | 0.1.0 |
| created_at | 2025-12-07 03:57:26.599574+00 |
| updated_at | 2025-12-07 03:57:26.599574+00 |
| description | A lightweight, high-performance tool for editing JSON based on field paths |
| homepage | |
| repository | https://github.com/ymc-github/i_edit_json |
| max_upload_size | |
| id | 1971109 |
| size | 313,212 |
一个轻量级、高性能的 JSON 字段提取和操作工具。
cargo install i_edit_json
git clone https://github.com/your-username/i_edit_json
cd i_edit_json
cargo install --path .
git clone https://github.com/ymc-github/i_edit_json
cd i_edit_json
cargo install --path .
cargo install --git https://github.com/ymc-github/i_edit_json
cargo install --git https://github.com/ymc-github/i_edit_json --branch main
cargo install --git https://github.com/ymc-github/i_edit_json --tag v0.1.0
# 从 docker.io
# docker pull docker.io/ymc-github/i_edit_json:latest
docker pull ymc-github/i_edit_json:latest
# 从 ghcr.io
# ghcr.io/<owner>/<repo>:latest
docker pull ghcr.io/ymc-github/i_edit_json:latest
# 从 package.json 提取包名
i_edit_json get --field name
# 去除字符串值的引号
i_edit_json get --field name --strip-quotes
i_edit_json get --field version --strip-quotes
i_edit_json get --field description --strip-quotes
i_edit_json get --field repository.url --strip-quotes
i_edit_json get --field "keywords" --strip-quotes
i_edit_json get --field "author" --strip-quotes
# 提取数组元素
i_edit_json get --field "keywords[0]" --strip-quotes
# 提取嵌套字段
i_edit_json get --field "dependencies.express" --strip-quotes
# 以 JSON 格式输出
i_edit_json get --field "scripts" --output json-pretty
# 提取多个字段
i_edit_json get -m name -m version -m description
# 设置版本号
i_edit_json set -f package.json -k version -v "1.1.0" --in-place
# 更新描述
i_edit_json set -f package.json -k description -v "An enhanced Node.js application" --in-place
# 更新作者
# i_edit_json set -f package.json -k author -v "Ye Mincong <cong@example.com>" --in-place
# 更新许可证
# i_edit_json set -f package.json -k license -v "Apache-2.0" --in-place
# 设置数组元素
i_edit_json set -k keywords[0] -v "rust" --in-place
# 指定值类型
i_edit_json set -k private -v "true" -t boolean --in-place
# 创建不存在的字段
i_edit_json set -k newField -v "value" --create-missing --in-place
# 设置数组元素(扩展数组)
i_edit_json set -k keywords[3] -v "cli" --create-missing --in-place
添加依赖到 Cargo.toml:
[dependencies]
i_edit_json = "0.1"
在代码中使用:
use i_edit_json::{get, set, ExtractConfig, SetConfig};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 提取字段
let get_config = ExtractConfig {
file_path: "package.json".to_string(),
field_path: "version".to_string(),
output_format: None,
strip_quotes: true,
};
let version = get::extract_field(&get_config)?;
println!("当前版本: {}", version);
// 设置字段
let set_config = SetConfig {
file_path: "package.json".to_string(),
field_path: "version".to_string(),
value: "1.2.3".to_string(),
value_type: None,
create_missing: false,
};
set::set_field_and_save(&set_config)?;
println!("版本更新成功");
// 提取多个字段
let file_path = "package.json";
let field_paths = vec!["name".to_string(), "version".to_string(), "description".to_string()];
let result = get::extract_multiple_fields(file_path, &field_paths, true)?;
for (field, value) in result.fields {
println!("{}: {}", field, value);
}
Ok(())
}
# 添加新依赖
i_edit_json set -f package.json -k dependencies.express -v "^4.18.2" --create-missing --in-place
# 更新依赖版本
i_edit_json set -f package.json -k dependencies.axios -v "^1.4.0" --in-place
# 添加开发依赖
i_edit_json set -f package.json -k devDependencies.jest -v "^29.5.0" --create-missing --in-place
# 查看所有依赖
i_edit_json get -f package.json -k dependencies --output json-pretty
# 添加新脚本
i_edit_json set -f package.json -k scripts.build -v "tsc" --create-missing --in-place
# 更新现有脚本
i_edit_json set -f package.json -k scripts.test -v "jest --coverage" --in-place
# 查看所有脚本
i_edit_json get -f package.json -k scripts --output json-pretty
# 提取关键信息
i_edit_json get -f package.json -m name -m version -m license -m main --output json
# 批量更新版本相关信息
i_edit_json set -f package.json -k version -v "2.0.0" --in-place
i_edit_json set -f package.json -k engines.node -v ">=18.0.0" --in-place
MIT OR Apache-2.0