Multiple rows vs Single row with JSON
I think that the best method is the first ... 


Simply put, it is.


  ... but it will create a lot of rows ... 


Yes, it will.
Don't worry. 


  ... and this could make DB slower? 


Relational databases are really, really good at running around large numbers of rows in many tables and putting things together.  With proper indexing, this structure will handle large numbers of rows with no problem at all and is the most flexible, so will support many different types of query well.