如何将长字符串转换为JSON对象
How do I convert long string into JSON Object?
我需要将字符串转换为从学习管理系统返回的JSON对象。一旦字符串成为JSON对象,我将把它作为我正在编写的jQuery插件的一部分。以下是我目前所拥有的:
要转换的回调:(我无法访问服务器端代码(它驻留在LMS(AICC)上),我只是通过javascript访问它,回调在下面,所以我只能使用此文本。我相信每行后面都有,但这正是我收到的格式。。。。除了文本什么都没有。)
ERROR=0
ERROR_TEXT=Successful
VERSION=2.2
AICC_DATA=[CORE]
STUDENT_ID=01234567
STUDENT_NAME=Doe, John R
SCORE=83
TIME=02:35:37
CREDIT=C
LESSON_LOCATION=page_1
LESSON_STATUS=INCOMPLETE
[Core_Lesson]
[Objectives_Status]
这就是我希望将其转换为:
{'ERROR':'0','ERROR_TEXT':'Successful','VERSION':'2.2','AICC_DATA':'[CORE]','STUDENT_ID':'01234567','STUDENT_NAME':'Doe, John R','SCORE':'83','TIME':'02:35:37','CREDIT':'C','LESSON_LOCATION':'page_1','LESSON_STATUS':'INCOMPLETE'}
这是我正在使用的jQuery:(正如你所看到的,如果可能的话,我正试图在没有循环的情况下做到这一点:)
$.get(_url,{command:"GetParam",version:"2.2",session_id:_sid},function(response)
{
/* this is my attempt at using a RegExp */
var match = RegExp('[?&]' + urlVar + '=([^&]*)').exec(response);
/* I thought maybe I could do it using an eval(), but I get an error -> Expected "]" */
var t = eval('{['+response+']}');
});
我相信我可以使用循环来解决这个问题,但我真的希望在没有for循环的情况下实现这一点。这可能吗?谢谢
如果你的行确实以"''n"结尾,那么你可以试试这个:
var obj = {};
theTextYouGetFromTheServer.replace(/([^=]+)=(.*)'n/g, function(_, name, value) {
obj[name] = value;
});
如果你的名字可以包含"=",那当然是个问题。
这样做的目的是匹配名称/值行的基本格式(name=value)并构建一个对象。字符串的JavaScript .replace()
方法为每个连续的匹配重复调用该函数,参数是整个匹配(这里我们不关心),然后是每个匹配的组(regex中parens中的内容)。
试试这个:
var text = "ERROR=0'nERROR_TEXT=Successful'nVERSION=2.2'nAICC_DATA=[CORE]'nSTUDENT_ID=01234567'nSTUDENT_NAME=Doe, John R'nSCORE=83'nTIME=02:35:37'nCREDIT=C'nLESSON_LOCATION=page_1 'nLESSON_STATUS=INCOMPLETE";
eval('var object = {' + text.replace(/([^='n]+)=([^'n]+)/g, '"$1":"$2",').replace(/'n/g, "") + '}');
alert(object.SCORE);
如果你有最后两行([Core_Lesson]
和[Objectives_Status]
),这就不起作用了。
刚刚发布我的版本。如果不好,请随时纠正我。
function toJSON (str) {
return '{''' + str.replace(/=/g, "':'").replace(/'n/g, "','") + '''}';
}
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象