2015-08-01 2 views
-5

Учитывая следующие JSON:преобразования JSON в этот формат

{ 
"api":{ 
    "@api" : "{get}", 
    "method" : "/user/:id", 
    "message" : "Request User information" 
    }, 
    "@apiName" : "GetUser" 
} 

Как я могу преобразовать его в следующей (документации API) формат?

/** 
* @api {get} /user/:id Request User information 
* @apiName GetUser 
*/ 

ответ

3

Pretty simple. Просто вопрос о конкатенации строк и навигации по объекту JSON. Может быть чище, если это сделано с template strings.

function convertToDocumentationComment (json) { 
    var str = '/**\n' 
    str += ('* @api ' + json.api['@api'] + ' ' + json.api.method + ' ' + json.api.message + '\n') 
    str += ('* @apiName ' + json.api['@apiName'] + '\n') 
    str += '*/' 
    return str 
} 

Вот тест:

function convertToDocumentationComment (json) { 
 
    var str = '/**\n' 
 
    str += ('* @api ' + json.api['@api'] + ' ' + json.api.method + ' ' + json.api.message + '\n') 
 
    str += ('* @apiName ' + json.api['@apiName'] + '\n') 
 
    str += '*/' 
 
    return str 
 
} 
 

 
var json = { 
 
"api":{ 
 
    "@api" : "{get}", 
 
    "method" : "/user/:id", 
 
    "message" : "Request User information" 
 
    }, 
 
    "@apiName" : "GetUser" 
 
} 
 
var r = convertToDocumentationComment(json) 
 
document.write(r.replace(/\n/g, '<br>'))

2

Я не уверен, если я правильно интерпретировать ваш вопрос, но вы пытаетесь генерировать документацию блоки, на основе данных из некоторого JSON ?

Если это так, вы можете использовать JSON.parse, а затем получить доступ к свойствам, необходимым для создания строки. Я бы, вероятно, использовал замену в шаблоне, как показано ниже (но это далеко не самый быстрый метод, я уверен)

Ваше описание формата отсутствует, но вам нужно будет следовать этому, чтобы определить, как использовать ,

var k = JSON.parse('{"@api" : "{get}"}'); 

var paramTpl = "* {name} {method} {message}\n"; 
var parameter = paramTpl.replace('{name}', k["@api"]); 
Смежные вопросы