2016-03-02 130 views
1

在golang源代碼中讀取極長的JSON或DB查詢字符串非常困難。在golang中,寫入JSON和MySQL查詢字符串的格式是什麼?

JSON實例:

"{\"task\":\"send_sms\",\"t_id\":988110,\"req\":{\"node\":1,\"msg_id\":987654321,\"m_num\":\"+61433092888\",\"p_num\":\"Private\",\"msg\":\"Hello world.\"}}  " 

DB查詢示例:

dbQuery = fmt.Sprintf("INSERT INTO `ms_message` (`task_id`, `panel_phone_num` ,`user_mobile_num`,`message_content`,`receiver_node_id`,`modem_index`,`generate_datetime`) SELECT * FROM (SELECT %d, \"%s\", \"%s\", \"%s\", %d,%d,\"%s\") AS tmp WHERE NOT EXISTS (SELECT * FROM `ms_message` WHERE `receiver_node_id` = %d AND `task_id` = %d) LIMIT 1", taskId, panelNumber, mobileNumber, messageContent, nodeId, modemId, dateTime, nodeId, taskId) 

什麼方式是好的,對上面的字符串看起來讀者友好嗎?

+3

不要使用一個格式字符串來構建你的SQL查詢。我無法強調這可能會有多危險。 http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/ – elithrar

回答

1

您可以使用反引號寫一個多string literal,就像這樣:

json := ` 
{ 
    "hello": "world", 
    "foo": "bar" 
}` 

https://play.golang.org/p/bU5q6tx8Jx

在您的SQL實例中的反引號可能是有問題的,但...

+0

太棒了!謝謝!我昨天花了幾個小時用手工格式化字符串...... –