Convert Valve KV into JSON
CJam, 57 54 bytes

{[~]2/{`_'{#{1&gt;W&lt;"\u%04x"fe%s`}{~J}?}f%':f*',*{}s\*}:J


This is a named function that pops a VDF string from the stack and pushes a JSON string in return.

CJam has no JSON built-ins, so the bonus won't be worth it. Since conditionally escaping some characters would be a pain for the same reason, I decided to escape everything.

The result isn't pretty, but it's valid JSON. Try it online in the CJam interpreter.