Javascript 解析JSON子字符串

Javascript 解析JSON子字符串,javascript,Javascript,我有一个javascript函数,它调用外部Api并在大多数情况下返回一个有效的JSON字符串 function (successResponse) { { console.log(successResponse); } 但是,在某些情况下,它会返回以下无效的JSON Response: Status=200, Text: {"createdTime":"2017-05-08T14:47:56Z","lastUpdatedTime":"2017-05-08T14:

我有一个javascript函数,它调用外部Api并在大多数情况下返回一个有效的JSON字符串

function (successResponse) {
    {
       console.log(successResponse);
    }
但是,在某些情况下,它会返回以下无效的JSON

Response: Status=200, Text: {"createdTime":"2017-05-08T14:47:56Z","lastUpdatedTime":"2017-05-08T14:47:56Z","createdMode":"API","uuid":"e333c1-3599-36d7-9ef5-dc22c79a4a52","userId":"anonymous"}, Error Message: null
如何解析上述字符串以获取“uuid”


谢谢

如果您需要该格式的响应字符串,可以使用正则表达式提取响应的“文本”部分:

function (successResponse) {
{
   var responseText = successResponse.match(/\{.+\}/);
   var responseTextJSON = JSON.parse(responseText);
   var uuid = responseTextJSON.uuid;
   console.log(uuid);
}

也许您可以自己解析字符串以排除{}之外的所有内容

var apiResponse='响应:状态=200,文本:{“createdTime”:“2017-05-08T14:47:56Z”,“LastUpdateTime”:“2017-05-08T14:47:56Z”,“createdMode”:“API”,“uuid”:“e333c1-3599-36d7-9ef5-dc22c79a4a52”,“userId”:“匿名”},错误消息:null;
var apiResponse_fixed=apiResponse.substring((apiResponse.indexOf(“{”)-1),(apiResponse.lastIndexOf(“}”)+1));
var json_obj=json.parse(apiResponse_fixed);
log(json_obj.uuid)替换非JSON特性,然后解释为JSON
看起来服务器所有者有点懒惰,编写了一个错误响应,其中包含一个类似JSON的内部部分,但被几个非JSON元素包围

如果您迫切需要解决此问题,并且无法修复服务器输出格式,我的建议如下:

notQuiteJson = 'Response: Status=200, Text: {"createdTime":"2017-05-08T14:47:56Z","lastUpdatedTime":"2017-05-08T14:47:56Z","createdMode":"API","uuid":"e333c1-3599-36d7-9ef5-dc22c79a4a52","userId":"anonymous"}, Error Message: null';

madeJson = notQuiteJson.replace('Response: Status=200, Text:','{"Response": {"Status":200}, "Text":').replace('Error Message: null','"ErrorMessage": null}')

obj = JSON.parse(madeJson)

console.log(obj.Text.uuid)  // Result: "e333c1-3599-36d7-9ef5-dc22c79a4a52"
当然,只有当错误消息总是这样时,这才有效。实际上,您可能希望使用3位通配符来覆盖一系列“Status=”代码。但是,您还必须确信,所有错误模式都会在响应的开始和结束处生成相同的非JSON文本

免责声明
@sp00m和@Bergi,别杀我:你当然是对的,但这只是为了如果海报在这件事上没有选择8-

你要请求哪台服务器?如果是你的,最好尝试更新服务器对此端点的响应方式,因为自定义语法响应通常是个坏主意。你能告诉我们API链接以便我们可以验证吗?…即使不是你的,也让他们修复服务器错误,而不是解决它。你能发布有效的json格式和无效的json格式吗?因为我不确定您是指整个响应,包括状态还是仅指“文本”属性。JSON如何无效?服务器是否只返回响应主体中的JSON以外的其他信息?