2016-01-11 6 views
-2

У меня есть проблема, когда у меня есть файл, который содержит мои объекты в видеJavascript шаблонных двойные кавычки

Dog1: { 
    information: { 
    color: 'red', 
    name: 'Tom' 
    } 
} 

и я строй программы, которая автоматически заполняет мой объект из файла, но текущий выход имеет форма

"Dog1": { 
    "information": { 
    "color": "red", 
    "name": "Tom" 
    } 
} 

Моя проблема заключается в том, что мне нужно одинарные или двойные кавычки «красный» и «Томь», но я это не нужно на все остальное. Я пробовал использовать jscodeshift, но не могу заставить его работать. У кого-нибудь есть подсказки?

Большое спасибо за ваше время, Джо

+2

Последний один стандартный JSON, бывший один является Java-выражение. Javascript будет анализировать последний так же, как и тот же. Зачем вам нужен прежний формат? Как вы создаете объекты? –

+0

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

+0

Итак, у вас есть эти объекты в javascript и пытаетесь сериализовать его в строку данного формата (и, возможно, отправить его на сервер)? Как вы создали второй вывод? –

ответ

0

Ваш объект является JavaScript объект правильно? Однако объект записывается в файл, кажется, что он написан в формате JSON (JavaScript Object Notation).

По-моему, это не так. Это правильный способ хранения объектов JavaScript. Если вам действительно не нужны кавычки, возможно, вам понадобится реализовать свою собственную логику для записи объекта в файл.

Обновление: См. JSON.Stringify without quotes on properties?. У этого парня была такая же проблема, и решение заключалось в том, чтобы удалить кавычки после вызова JSON.stringify().

+0

Я работаю над более крупной системой, которая требует такого формата, просто рекомендую написать свою собственную логику или регулярное выражение чтобы исправить это? –

+0

Я не знаю, какие рамки или библиотеки вы используете для записи объекта в файл. Но если он сохраняет объект как JSON, и вам не нужен JSON, возможно, вам придется изменить некоторые конфигурации или реализовать свою собственную логику. –

+0

просто используя stringify и beautify (для форматирования) на данный момент –

0

Я быстро реализован пользовательский JSon сериалайзер для вас:

function _serialize_object_key(key) { 
 
    return /^[a-zA-Z_\$][a-zA-Z_\$0-9]*$/.test(key) ? key : JSON.stringify(key); 
 
} 
 
function _serialize_object(obj, opts, current_indent) { 
 
    var arr = [], inner_indent = current_indent + opts.indent_inc; 
 
    for (var key in obj) { 
 
    if (obj.hasOwnProperty(key)) { 
 
     arr.push(inner_indent + _serialize_object_key(key) + ': ' + _json_like_stringify(obj[key], opts, inner_indent)); 
 
    } 
 
    } 
 
    return '{\n' + arr.join(',\n') + '\n' + current_indent + '}'; 
 
} 
 

 
function _serialize_array(arr, opts, current_indent) { 
 
    var inner_indent = current_indent + opts.indent_inc; 
 
    return '[\n' + inner_indent + arr.map(inner_map).join(',\n' + inner_indent) + '\n' + current_indent + ']'; 
 
    function inner_map(x) { 
 
    return _json_like_stringify(x, opts, inner_indent); 
 
    } 
 
} 
 

 
function _json_like_stringify(x, opts, current_indent) { 
 
    switch (typeof x) { 
 
    case "number": 
 
    case "string": 
 
    case "boolean": 
 
    default: 
 
     return JSON.stringify(x); 
 
    case "object": 
 
     if (x === null) return 'null'; 
 
     if (Array.isArray(x)) return _serialize_array(x, opts, current_indent); 
 
     return _serialize_object(x, opts, current_indent); 
 
    } 
 
} 
 

 
function json_like_stringify(x, indent) { 
 
    if (indent === undefined) indent = 2; 
 
    var indent_inc = ''; 
 
    for (var i = 0; i < indent; i++) indent_inc += ' '; 
 
    return _json_like_stringify(x, {indent_inc:indent_inc}, ''); 
 
} 
 

 
$('pre').text(json_like_stringify({a:[1,2,3],b:{c:{d:[6,7,"asdasda\"fgdfgdfg",true,null, [1, 2, 3, {' ':' '}, 5, 6, 7, 8, 9, 10, 11]]}}}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<pre></pre>

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