转换';格式错误';JavaJSON对象到javascript
我有一个Java JSON对象,它的格式是[{a=b}],我试图将此对象作为JSON对象传递到javascript中,但它在键和值上都缺少“值”,并且使用“=”代替“:” 有没有一种简单的方法可以将这个JavaJSON对象转换为可供不同服务使用的对象 解析被证明是非常复杂的,因为实际的JSON是嵌套的,并且缺少引用和嵌套指示 “JSON”数据示例: [{wwnType=Virtual,serialNumberType=Virtual,connections=[],modified=2016-10-29T19:00:04.457Z,macType=Virtual,category=server profile templates,serverHardwareTypeUri=/rest/server硬件类型/32006464-D3C6-4B4E-8328-47a193c616c,bios={覆盖设置=[],manageBios=false},固件={firmwareBaselineUri=null,manageFirmware=false,forceInstallFirmware=false,firmwareInstallType=null},boot={manageBoot=true,order=[CD,软盘,USB,硬盘,PXE]},hideUnusedFlexNics=true,bootMode=null,state=null,affinity=Bay,localStorage={controllers=[]},type=ServerProfileTemplateV1,status=OK,description=,eTag=1477767604457/1,serverProfileDescription=test,name=test,created=2016-10-29T19:00:04.428Z,enclosureGroupUri=/rest/enclosure groups/e989621b-930e-40e7-9db0-a6ddbf841709,uri=/rest/server profile templates/db1dbcc-4237-4452-ac3-cf9dfdc75365,sanStorage={manageSanStorage=false,volumeAttachments=[]}]转换';格式错误';JavaJSON对象到javascript,javascript,java,json,parsing,Javascript,Java,Json,Parsing,我有一个Java JSON对象,它的格式是[{a=b}],我试图将此对象作为JSON对象传递到javascript中,但它在键和值上都缺少“值”,并且使用“=”代替“:” 有没有一种简单的方法可以将这个JavaJSON对象转换为可供不同服务使用的对象 解析被证明是非常复杂的,因为实际的JSON是嵌套的,并且缺少引用和嵌套指示 “JSON”数据示例: [{wwnType=Virtual,serialNumberType=Virtual,connections=[],modified=2016-10
谢谢,这不会很简单。不过,我认为您可以不用编写完整的解析器来完成这项工作,只要您愿意编写一个标记器或词法分析器,将输入字符串分解为标记。基本计划可能是:
[
,]
,{
,}
,逗号,=
;或标识符(a
或b
在您的示例中,但我不知道可能的有效格式是什么);或者,可能是引号中的字符串文字,或者是数字文字,具体取决于您的需要{
:如果后面的第一个标记是标识符,请将其放在引号中;如果后面的第二个标记是=
,请将其更改为:
;如果后面的第三个标记是标识符,请将其放在引号中。逗号后面可能也是如此,但您需要跟踪逗号是否是键值列表的分隔符对象中的e对或数组中的值列表。为此,您可能需要保留一个堆栈,以便在看到[
或{
时推送该堆栈,并在看到}
或]
时弹出该堆栈,以便知道您是在对象还是在数组中抱歉,我不认为有更简单的答案,除了你可能想研究解析器生成器(请参阅)。我实际上没有研究Java中的任何解析器生成器,所以我不知道它们的使用有多简单。请不要试图用正则表达式解决整件事。(正则表达式将有助于将字符串分解为令牌,但尝试使用正则表达式做更多的事情可能只会带来偏头痛。)我认为这不是json对象。json对象应该是这样的 例如:
JSONObject obj = new JSONObject();
obj.put("a", "b");
obj.put("name", "your name");
输出:{“a”:“b”,“name”:“your name”}
传递到javascript
var obj = '{"a": "b", "name":"your name"}',
var json = JSON.parse(obj);
我认为你不理解这个问题。