在TextArea中使用vkbeautify pretty print的结果

时间:2016-10-03 08:02:01

标签: javascript xml textarea sapui5 pretty-print

您好我有以下TextArea来显示JSON字符串:

<TextArea id="payloadlabel" width="1000px" height='auto' rows='80' />.

我的问题是JSON字符串格式不正确,请参阅example

我正在使用库vkbeautify,如下所示:

var myObj = { 
    "urn.getxxxx": {
         "urn.xxxx" : "cxxxxx-44e9-xxxx-a91b-0000xxxx\\xxxxx\\3xx\\xx\\x\\",
         "urn.xxxx" : "xxxxx",
         "urn.xxxxx" : "x",
         "urn.xxxx": "20xx-07-08xxx:03:41+02:00"
    }
};

var request = JSON.stringify(myObj);
vkbeautify.json(request);
var tryModel = new sap.ui.model.json.JSONModel();
tryModel.setData(request);


var payloadtxta =  sap.ui.getCore().byId(view.createId('payloadlabel'));
payloadtxta.setModel(tryModel);
payloadtxta.setValue(request);

不幸的是它没有用。 JSON内容与示例中的内容完全相同。这有什么不对?

我的网页内容中包含vkbeautify.js文件,并将其包含在索引中。

<script type="text/javascript" src="vkbeautify.js"></script> 

由于我没有得到vkbeautify方法的错误,我认为我以正确的方式包含它。如果您知道任何其他方法来格式化JSON内容任何其他库或想法,欢迎提出建议。谢谢。

2 个答案:

答案 0 :(得分:0)

您使用的是错误的变量(BTW:JSON.stringify是多余的,因为您已有JSON字符串):

var beautifiedObj = vkbeautify.json(myObj);

var payloadtxta = this.byId(view.createId("payloadlabel"));
payloadtxta.setValue(beautifiedObj);

模型永远不会在您的示例中使用,因此您可以将其删除或通过UI5将其用作意图,并将控件直接绑定到模型属性。

<TextArea id="payloadlabel" value={/request}" width="1000px" height='auto' rows='80' />.

this.setModel(new sap.ui.model.json.JSONModel({ 
   "request" : vkbeautify.json(myObj)
}); 

答案 1 :(得分:0)

看一下vkbeautify的来源,如果你只是为了这个目的使用那个库,那就毫无意义了 - 你可以用标准JavaScript做你需要的东西:

class setInterval():
    def __init__(self, func, sec):
        def func_wrapper():
            self.t = threading.Timer(sec, func_wrapper)
            self.t.start()
            func()
        self.t = threading.Timer(sec, func_wrapper)
        self.t.start()

    def cancel(self):
        self.t.cancel()

在此处查看MDN上的JSON.stringify文档 - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

vkbeautify的REF来源 - https://github.com/vkiryukhin/vkBeautify/blob/master/vkbeautify.js#L152