2017-02-07 2 views
0

Я пытаюсь получить sessionid перед функцией REST, но в случае, если я не конвертирую toString(); только цифры (21 22 2e ...).Получить первое слово строки внутри массива - из возврата REST

Смотреть это изображение:

: Obs .: Перед использованием раскола.

!!xxxxxxx.xxxxx.xxxxxxx.rest.schema.xxxxResp {error: null, sessionID: qdaxxxxxxxxxxxxxj} 

Мой код:

var Client = require('./lib/node-rest-client').Client; 
var client = new Client(); 

var dataLogin = { 
    data: { "userName":"xxxxxxxx","password":"xxxxxxxx","platform":"xxxxx" }, 
    headers: { "Content-Type": "application/json" } 
}; 

client.registerMethod("postMethod", "xxxxxxxxxxx/login", "POST"); 

client.methods.postMethod(dataLogin, function (data, response) { 
    // parsed response body as js object 
    // console.log(data); all return, image 1 
    // raw response 
if(Buffer.isBuffer(data)){ 
    data = data.toString('utf8'); // if i does not convert to string, return numbers, see image 1.. 
    console.log(data); //all inside image 2, and i want just value from sessionid 

    var output = data; 
    var res = output.split(" "); // using split 
    res = res[4].split("}", 1); 

    } 
    console.log(res); //image 3 
}); 

я тестировал с JSON.parse и JSON.stringify и это не сработало, шоу просто 'undefined' для всех. После преобразования toString();, И поскольку я превратил значения в строку, я думал об использовании split, чтобы получить только значение sessionid.

И когда я использовал split, все преобразования в array и возвращение из console.log(data) см Изображение 2:

2º: Obs .: после использования разделения и преобразования в array автоматически.

enter image description here

И возвращение после использования split это с условиями внутри моего кода:

3º: и возвращение после использования split это с условиями внутри моего кода:

[ 'bkkRQxxxxxxxxxxxxx' ] 

И я хочу просто:

bkkRQxxxxxxxxxxxxx 

Я хотел бы знать, как решить эту проблему после всех этих искушений, но если у вас есть другой способ получить sessionid, я был бы рад узнать.

Спасибо заранее!

+1

Вы должны вставить текст непосредственно в свой вопрос вместо использования скриншотов. Это упрощает анонимность данных, ее легче читать и использовать, а для мобильных пользователей используется меньше данных. – qxz

+1

Вместо манипуляции с строкой. Используйте JSON.parse() в своих данных, чтобы вернуть объект JS. – RayfenWindspear

+0

@RayfenWindspear, я тоже использую это, но возвращаю undefined, возможно, я что-то не так, вы можете опубликовать один пример для него, пожалуйста? –

ответ

1

После преобразования Buffer в строку удалите все прикрепленные к передней части с помощью data.substr(data.indexOf('{')), затем JSON.parse() остальное. Затем вы можете просто использовать объект, чтобы получить sessionID.

if(Buffer.isBuffer(data)){ 
    data = data.toString('utf8'); 
    data = data.substr(data.indexOf('{')); 
    obj = JSON.parse(data); 
    console.log(obj.sessionID); 
} 

EDIT: вопрос вы имеете с JSON.parse() потому, что возвращается не на самом деле JSON. JSON спецификация требует свойств котироваться ("). See this article

Если строка выглядела так, что это будет работать: {" ошибка ": нулевая, "SESSIONID": qdaxxxxxxxxxxxxxj}

Поскольку JSON является не правда, json, вы можете использовать регулярное выражение, чтобы получить нужную вам информацию. Это должно получить его для вас.

re = /(sessionID:)([^,}]*)/g; 
match = re.exec(data); 
console.log(match[2]); 

EDIT 2: После того, как полностью прочитав статью, что я связана выше (ой) ха-ха, это более предпочтительный способ борьбы с некотировочный JSON.

var crappyJSON = '{ somePropertyWithoutQuotes: "theValue!" }'; 
var fixedJSON = crappyJSON.replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g, '"$2": '); 
var aNiceObject = JSON.parse(fixedJSON); 
+0

Я пробовал, но ошибка: 'Неожиданный токен e в JSON в позиции 1 undefined: 1 {ошибка: null, sessionID: OHUr4XUC3BuVOrfV80Rs3Nk6}' ^ –

+0

Распечатайте строку перед вами JSON.parse(). Вероятно, все-таки есть что-то в этом роде. В основном вы хотите удалить первую часть, пока вы не останетесь с помощью всего лишь {error: null, sessionID: xxxxxxxxx} – RayfenWindspear

+0

Я пытаюсь с obj = JSON.stringify (data); и вернуть все это: «{error: null, sessionID: xxxxxxxxx}». Я попробую, что вы скажете сейчас –

Смежные вопросы