gpt4 book ai didi

javascript - 如何遍历复杂的 Json 对象并对每个等于特定值的属性做一些事情

转载 作者:行者123 更新时间:2023-11-30 14:00:55 25 4
gpt4 key购买 nike

我遇到了以下问题,

我需要遍历一个大的 Json 对象(子 Node 由数组、字符串和对象组成,就嵌套属性而言至少有 4-5 层深度)。

在大 Json 文件的某些部分有一个特定的对象结构,它有一个名为“erpCode”的属性。我需要扫描 Json 并找到具有该属性的所有对象,使用该代码获取值以询问不同的 API 以获取详细信息,一旦我获得详细信息,将它们插入到具有当前“erpCode”的对象中。

澄清一下,在我的例子中,Json 中的父 Node 属性名称始终等于“typeSysname”字段中的值,该字段与 erpCode 属性位于同一“级别”。一个简单的例子:

{
"cars": [
{
"name": "X222",
"carType": {
"erpCode": "skoda",
"value": null,
"typeSysName": "carType"
}
}
],
"model": {
"year": 1999,
"details": {
"erpCode": "112"
"value": null,
"typeSysName": "details"
}
}
}

在此示例中,我需要找到 2 个属性,从中获取值 skoda 和 112,并从不同的 API 获取值和描述数据,并将其设置到此 Json 的正确位置。

附言是否有一个好的 npm 包可以帮助我解决这个问题?

编辑:几个月前,我在 C# 中获得了一个解决方案,它以通用方式在 Json 上运行,并以通用方式处理结构的复杂性。但我现在需要将其转换为 Javascript,我有点迷茫。

public static string TranslateDocErpCodes(string jsonString, string topRetailerSysName)
{

try
{
var doc = JObject.Parse(jsonString);
var erpCodeList = doc.SelectTokens("$..erpCode").ToList();

foreach (var erpCodeJToken in erpCodeList)
{
var value = erpCodeJToken?.Value<string>();
var erpCodeParent = erpCodeJToken?.Parent.Parent;
var erpCodeProperty = erpCodeParent?.Path.Split(".").Last();

var result =
_dataService.GetLovFromErpCode(topRetailerSysName, erpCodeProperty, value);

if (result == null)//reset lov obj
{
if (erpCodeParent?.Parent is JProperty prop)
prop.Value = JObject.FromObject(new LovObject { ErpCode = value });
}
else//set lov obj
{
result.ErpCode = value;
if (erpCodeParent?.Parent is JProperty prop)
prop.Value = JObject.FromObject(result);
}

}
return JsonConvert.SerializeObject(doc);
}
catch (Exception e)
{
throw new Exception("ErpConvert.TranslateDocErpCodes() : " + e);
}
}

最佳答案

mb 类似的东西;

function processObject(jsonData) {
for (prop in jsonData) {
if (jsonData.hasOwnProperty(prop)) {
// We get our prop
if (prop === 'code') {
let codeValue = jsonData[prop]
doSomeAsync(codeValue)
.then(response => {
jsonData[prop] = response;
})
}
let curValue = jsonData[prop];
if (Array.isArray(curValue)) {
// Loop through the array, if array element is an object, call processObject recursively.
processArray(curValue);
} else if (typeof curValue === 'object') {
processObject(curValue);
}
}
}
}

关于javascript - 如何遍历复杂的 Json 对象并对每个等于特定值的属性做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com