Javascript 将JSON拆分为两条不同的路径

Javascript 将JSON拆分为两条不同的路径,javascript,c#,json,Javascript,C#,Json,大家好 我正在寻找创建一个JSON脚本,它将允许对象获取一个值或沿着数据路径继续 例如: { "A" : { "B" : "123" } } 在上面的例子中,如果我得到A.B的值,我得到的结果是123。但是,我也希望A有自己的值,例如“XYZ” 所以我说,什么是A?它将返回“XYZ”,我还说,A是什么。B它将返回“123” 我希望这是有意义的,JSON似乎遵循一条路径,但我希望能够遵循该路径并为每个节点分配值。它类似于节点有一个值,但它也有子节点和父节点 非常感谢您在理论方面提

大家好

我正在寻找创建一个JSON脚本,它将允许对象获取一个值或沿着数据路径继续

例如:

{
  "A" : {
    "B" : "123"
  }
}
在上面的例子中,如果我得到A.B的值,我得到的结果是123。但是,我也希望A有自己的值,例如“XYZ”

所以我说,什么是A?它将返回“XYZ”,我还说,A是什么。B它将返回“123”

我希望这是有意义的,JSON似乎遵循一条路径,但我希望能够遵循该路径并为每个节点分配值。它类似于节点有一个值,但它也有子节点和父节点


非常感谢您在理论方面提供的任何帮助

我不确定我是否理解您的问题,但似乎应该在请求或响应之前找到您要查找的JSON字符串的逻辑。返回多个逻辑路径似乎不是一个好主意。

我不确定我是否理解您的问题,但似乎应该在请求之前或响应之前找到您要查找的JSON字符串的逻辑。返回多个逻辑路径似乎不是一个好主意。

不能为对象属性指定两个不同的值。但是,您可以这样做:

{
  "A" : {
    "B" : "123",
    "value" : "XYZ"
  }
}
引用
A.value
将返回
XYZ
A.B
将返回
123

编辑:

如果将
A
设置为返回所需值的函数,则可以将属性分配给
A
。但这可能是一种不好的做法:

let A = function () {
  return 'XYZ';
}

A.B = '123';

let obj = {
  A
};

console.log(A()); // XYZ
console.log(A.B); // 123

不能为对象特性指定两个不同的值。但是,您可以这样做:

{
  "A" : {
    "B" : "123",
    "value" : "XYZ"
  }
}
引用
A.value
将返回
XYZ
A.B
将返回
123

编辑:

如果将
A
设置为返回所需值的函数,则可以将属性分配给
A
。但这可能是一种不好的做法:

let A = function () {
  return 'XYZ';
}

A.B = '123';

let obj = {
  A
};

console.log(A()); // XYZ
console.log(A.B); // 123

JSON
代表
JavaScript对象表示法
,这意味着JSON代表一个对象。对象的每个属性只能有一个值。在您的情况下,这是以下内容:

var a = { "A": { "B": "123"}
这表示类似于
{A:{B:123}
的对象,这意味着:

console.log(a.A) // {B: 123}
console.log(a.A.B) // 123
所以你想做的是不可能的


JSON
代表
JavaScript对象表示法
,这意味着JSON代表一个对象。对象的每个属性只能有一个值。在您的情况下,如下所示:

var a = { "A": { "B": "123"}
这表示类似于
{A:{B:123}
的对象,这意味着:

console.log(a.A) // {B: 123}
console.log(a.A.B) // 123
所以你想做的是不可能的


您可以使用
reduce()
方法创建自定义函数,以便能够将嵌套键作为字符串传递

const data={“A”:{“B”:“123”}
常量getPath=(路径,对象)=>{
返回路径.split('.').reduce(函数(r,e,i,arr){
返回r[e]| |(arr[i+1]?{}:未定义)
},obj)
}
日志(getPath('A.B',data))
日志(getPath('A',data))

log(getPath('A.C',data))
您可以使用
reduce()
方法创建自定义函数,以便能够将嵌套键作为字符串传递

const data={“A”:{“B”:“123”}
常量getPath=(路径,对象)=>{
返回路径.split('.').reduce(函数(r,e,i,arr){
返回r[e]| |(arr[i+1]?{}:未定义)
},obj)
}
日志(getPath('A.B',data))
日志(getPath('A',data))

console.log(getPath('A.C',data))
你要问的是不可能的。JSON是键:基于值的。A的值是唯一属性为
B
的对象。你必须在B中添加另一个名为
Value
的属性,然后你可以调用
A.Value
。你要问的是不可能的。JSON是键:基于值的。A的值是带有s的对象
B
的ole属性。你必须在B中添加另一个名为
Value
的属性,然后你可以调用
A.Value
。抱歉,这不是我要找的,它返回的是完整的json,而不是它所包含的值。我感觉我想要的是不可能的。抱歉,这不是我要找的,它返回的是完整的json,而不是它所持有的值。我感觉我想要的是不可能的。谢谢,我感觉不是。如果它解决了你的问题,请用绿色钩子标记答案;)祝你愉快谢谢,我感觉不是。如果它解决了你的问题,请用绿色钩子标记答案;)祝你愉快ce dayI找到了一个解决方案,但是我同意它变得有点混乱。谢谢你的输入我找到了一个解决方案,但是我同意它变得有点混乱。谢谢你的输入我有点喜欢你使用a.Value的地方。如果我可以修改对象调用的返回类型,那么我可以轻松解决这个问题。谢谢你,嗯,我有点喜欢你使用a.Value的地方如果我可以修改对象调用的返回类型,那么我可以很容易地解决这个问题。谢谢