我有以下
JSON文件作为输入,
{ "$type": "NanoWebInterpreter.WebInputData,NanoWebInterpreter","NBBList": { "$type": "System.Collections.Generic.List`1[[monoTNP.Common.NBB,monoTNP.Common]],mscorlib","$values": [ { "$type": "monoTNP.Common.NBB,monoTNP.Common","ID": "id-0065-00000003","MPList": { "$type": "System.Collections.Generic.List`1[[monoTNP.Common.MP,"$values": [ { "$type": "monoTNP.Common.EllipticalMP,"Eccentricity": 1.0,"ID": "id-0065-00000006","ParticleIndex": -1,"DispersionInteractionStrength": 0.0,"DispersionInteractionRange": 2.5,"CharacteristicSize": 0.0,"CenterOfMass": "<0,0>","OrientationVector": "<>" },{ "$type": "monoTNP.Common.CubeMP,"ID": "id-0065-00000005",{ "$type": "monoTNP.Common.CircularMP,"ID": "id-0065-00000004","OrientationVector": "<>" } ] },
等等
我的最终目标是递归地跟踪这个树,用< ul>包装每个键/对象名称.标签,以及某种< form>中“ParticleIndex”级别的属性结构,但我无法弄清楚如何索引到两个’$values’数组.
这是我一直在操作以学习如何访问每个元素(对象或数组)的代码:
foreach ($json->NBBList->'$values'[0] as $key => $value){ var_dump($key); echo "\n".var_dump($value); echo "\n\n\n"; }
这显然不起作用,因为值的索引在字符串之外,但是当它在内部时,PHP将其解释为字符串的一部分.
有没有办法让我能够索引’$values’数组的每个元素,并最终在for循环中?
您可以使用以下表示法访问名称包含特殊字符的对象属性:
$json->NBBList->{'$values'}[0]
我不认为这种行为在任何地方都有记录,但你可以在PHP grammar中找到它(参见variable_name的定义,它在object_property中使用的object_dim_list中使用).