Minecraft Language Files Updater In 1.13, Minecraft language files were switched from being a simple multi-line key=value format to JSON.
Challenge
Write a program converting from the original format returning a JSON string. Input can be taken using any standard input method, output must be json from any standard output method
The original format contains lines with key=value pairs, for example
tile.dirt.name=Dirt
advMode.nearestPlayer=Use &quot;@p&quot; to target nearest player

build.tooHigh=Height limit for building is %s blocks

Should be converted to one large JSON object with key=value
{
    &quot;tile.dirt.name&quot;: &quot;Dirt&quot;,
    &quot;advMode.nearestPlayer&quot;: &quot;Use \&quot;@p\&quot; to target nearest player&quot;,
    &quot;build.tooHigh&quot;: &quot;Height limit for building is %s blocks&quot;
}

Some details

Any valid JSON is allowed as long as it contains only the correct key/value pairs. Trailing commas are allowed because Minecraft allows them.
The only things that must be escaped are quotes. (No newlines, backslashes, or other json-breaking things existed in the language file prior to 1.13)
Empty lines should be ignored
Lines contain exactly one equals

Test Cases
Input:
tile.dirt.name=Dirt
advMode.nearestPlayer=Use &quot;@p&quot; to target nearest player

build.tooHigh=Height limit for building is %s blocks

Output:
{
    &quot;tile.dirt.name&quot;: &quot;Dirt&quot;,
    &quot;advMode.nearestPlayer&quot;: &quot;Use \&quot;@p\&quot; to target nearest player&quot;,
    &quot;build.tooHigh&quot;: &quot;Height limit for building is %s blocks&quot;
}

Input:
translation.test.none=Hello, world!
translation.test.complex=Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!
translation.test.escape=%%s %%%s %%%%s %%%%%s
translation.test.invalid=hi %
translation.test.invalid2=hi %  s
translation.test.args=%s %s
translation.test.world=world

Output:
{
  &quot;translation.test.none&quot;: &quot;Hello, world!&quot;,
  &quot;translation.test.complex&quot;: &quot;Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!&quot;,
  &quot;translation.test.escape&quot;: &quot;%%s %%%s %%%%s %%%%%s&quot;,
  &quot;translation.test.invalid&quot;: &quot;hi %&quot;,
  &quot;translation.test.invalid2&quot;: &quot;hi %  s&quot;,
  &quot;translation.test.args&quot;: &quot;%s %s&quot;,
  &quot;translation.test.world&quot;: &quot;world&quot;,
}

Input:
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
stat.useItem=%1$s Used
stat.breakItem=%1$s Depleted

Output:
{
    &quot;stat.mineBlock&quot;: &quot;%1$s Mined&quot;,
    &quot;stat.craftItem&quot;: &quot;%1$s Crafted&quot;,
    &quot;stat.useItem&quot;: &quot;%1$s Used&quot;,
    &quot;stat.breakItem&quot;: &quot;%1$s Depleted&quot;
}
Python 3, 91 77 bytes
-14 Bytes thanks to OMᗺ
I thought that the printout of a Python dictionary would be close enough to JSON to make it a very competitive language for this challenge.  However, the string representation of python dictionaries is different enough from JSON that I had better luck using python's built-in JSON library. I'll bet this can be done more succinctly in JavaScript.
import json
f=lambda x:json.dumps(dict(i.split(&quot;=&quot;)for i in x.split(&quot;\n&quot;)if i))

Try it Online!

Edit:
Bash + Sed, 68 63 bytes
Bug fix thanks to OMᗺ and Night 2
-5 Bytes thanks to OMᗺ
I realized that it might be more byte efficient to directly convert the text to JSON without bundling it in an object, as was my approach for the python solution.  Per byte, sed is the most powerful language for regex replacement that I know of.
echo {`echo &quot;$1&quot;|sed 's/&quot;/\\\&quot;/g;s/\(.*\)=\(.*\)/&quot;\1&quot;:&quot;\2&quot;,/'`}

Try it Online!
Explanation
echo {`                                  #  prints the leading curly brace
       echo &quot;$1&quot;|sed                     # feeds the input into sed
       's/&quot;/\\&quot;/g;                       # replaces &quot; with \&quot;
       s/\(.*\)=\(.*\)/&quot;\1&quot;:&quot;\2&quot;,/'      # surrounds the left and right hand sides of the equals with quotes and joins them with a colon
`}                                       # prints the closing curly brace