Explicitly parse JSON string vs JSON.deserialize Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Moderator Election Q&A - Questionnaire 2019 Community Moderator Election ResultsJSON and escaped double quoteParse nested JSONJSON parsing to Visualforce page difficultiesDefault values for Wrapper variables not setConvert date in JSON to Date from StringMethod does not exist or incorrect signature: void parse(String) from the type or_propertyJSONTestHow to parse JSON String through apexDeserializing/Parsing the JSON response to an Apex classJson2apex - Message consuming unrecognized propertyParse JSON using APEX provided JSON Methods

Withdrew £2800, but only £2000 shows as withdrawn on online banking; what are my obligations?

Stars Make Stars

Why was the term "discrete" used in discrete logarithm?

Should I discuss the type of campaign with my players?

How much radiation do nuclear physics experiments expose researchers to nowadays?

How can players work together to take actions that are otherwise impossible?

What is a Meta algorithm?

What is the correct way to use the pinch test for dehydration?

How to recreate this effect in Photoshop?

Is 1 ppb equal to 1 μg/kg?

How discoverable are IPv6 addresses and AAAA names by potential attackers?

Can a non-EU citizen traveling with me come with me through the EU passport line?

iPhone Wallpaper?

Does accepting a pardon have any bearing on trying that person for the same crime in a sovereign jurisdiction?

Right-skewed distribution with mean equals to mode?

What happens to sewage if there is no river near by?

What is this single-engine low-wing propeller plane?

Diagram with tikz

Do you forfeit tax refunds/credits if you aren't required to and don't file by April 15?

Can inflation occur in a positive-sum game currency system such as the Stack Exchange reputation system?

How to bypass password on Windows XP account?

I am not a queen, who am I?

Is there a documented rationale why the House Ways and Means chairman can demand tax info?

What's the difference between `auto x = vector<int>()` and `vector<int> x`?



Explicitly parse JSON string vs JSON.deserialize



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Moderator Election Q&A - Questionnaire
2019 Community Moderator Election ResultsJSON and escaped double quoteParse nested JSONJSON parsing to Visualforce page difficultiesDefault values for Wrapper variables not setConvert date in JSON to Date from StringMethod does not exist or incorrect signature: void parse(String) from the type or_propertyJSONTestHow to parse JSON String through apexDeserializing/Parsing the JSON response to an Apex classJson2apex - Message consuming unrecognized propertyParse JSON using APEX provided JSON Methods



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















The JSON2Apex web tool offers 2 methods of parsing of the JSON string: one uses JSON.deserialize method, and the other creates parser and iterates over the input json. The second option can be enabled by checking "Create explicit parse code" in the tool.



QUESTION



In what cases would a developer prefer explicit parsing to a simple JSON.deserialize? If we compare both options the later seems to be much clear and less verbose which makes code more readable.



Explicit parsing



public class JSON2Apex 

public class User
public String name get;set;
public String twitter get;set;

public User(JSONParser parser)
while (parser.nextToken() != System.JSONToken.END_OBJECT)
if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
String text = parser.getText();
if (parser.nextToken() != System.JSONToken.VALUE_NULL)
if (text == 'name')
name = parser.getText();
else if (text == 'twitter')
twitter = parser.getText();
else
System.debug(LoggingLevel.WARN, 'User consuming unrecognized property: '+text);
consumeObject(parser);







public User user get;set;

public JSON2Apex(JSONParser parser)
while (parser.nextToken() != System.JSONToken.END_OBJECT)
if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
String text = parser.getText();
if (parser.nextToken() != System.JSONToken.VALUE_NULL)
if (text == 'user')
user = new User(parser);
else
System.debug(LoggingLevel.WARN, 'JSON2Apex consuming unrecognized property: '+text);
consumeObject(parser);







public static JSON2Apex parse(String json)
System.JSONParser parser = System.JSON.createParser(json);
return new JSON2Apex(parser);


public static void consumeObject(System.JSONParser parser)
Integer depth = 0;
do
System.JSONToken curr = parser.getCurrentToken();
if (curr == System.JSONToken.START_OBJECT while (depth > 0 && parser.nextToken() != null);








JSON.deserialize



public class JSON2Apex 

public class User
public String name;
public String twitter;


public User user;


public static JSON2Apex parse(String json)
return (JSON2Apex) System.JSON.deserialize(json, JSON2Apex.class);











share|improve this question




























    1















    The JSON2Apex web tool offers 2 methods of parsing of the JSON string: one uses JSON.deserialize method, and the other creates parser and iterates over the input json. The second option can be enabled by checking "Create explicit parse code" in the tool.



    QUESTION



    In what cases would a developer prefer explicit parsing to a simple JSON.deserialize? If we compare both options the later seems to be much clear and less verbose which makes code more readable.



    Explicit parsing



    public class JSON2Apex 

    public class User
    public String name get;set;
    public String twitter get;set;

    public User(JSONParser parser)
    while (parser.nextToken() != System.JSONToken.END_OBJECT)
    if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
    String text = parser.getText();
    if (parser.nextToken() != System.JSONToken.VALUE_NULL)
    if (text == 'name')
    name = parser.getText();
    else if (text == 'twitter')
    twitter = parser.getText();
    else
    System.debug(LoggingLevel.WARN, 'User consuming unrecognized property: '+text);
    consumeObject(parser);







    public User user get;set;

    public JSON2Apex(JSONParser parser)
    while (parser.nextToken() != System.JSONToken.END_OBJECT)
    if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
    String text = parser.getText();
    if (parser.nextToken() != System.JSONToken.VALUE_NULL)
    if (text == 'user')
    user = new User(parser);
    else
    System.debug(LoggingLevel.WARN, 'JSON2Apex consuming unrecognized property: '+text);
    consumeObject(parser);







    public static JSON2Apex parse(String json)
    System.JSONParser parser = System.JSON.createParser(json);
    return new JSON2Apex(parser);


    public static void consumeObject(System.JSONParser parser)
    Integer depth = 0;
    do
    System.JSONToken curr = parser.getCurrentToken();
    if (curr == System.JSONToken.START_OBJECT while (depth > 0 && parser.nextToken() != null);








    JSON.deserialize



    public class JSON2Apex 

    public class User
    public String name;
    public String twitter;


    public User user;


    public static JSON2Apex parse(String json)
    return (JSON2Apex) System.JSON.deserialize(json, JSON2Apex.class);











    share|improve this question
























      1












      1








      1








      The JSON2Apex web tool offers 2 methods of parsing of the JSON string: one uses JSON.deserialize method, and the other creates parser and iterates over the input json. The second option can be enabled by checking "Create explicit parse code" in the tool.



      QUESTION



      In what cases would a developer prefer explicit parsing to a simple JSON.deserialize? If we compare both options the later seems to be much clear and less verbose which makes code more readable.



      Explicit parsing



      public class JSON2Apex 

      public class User
      public String name get;set;
      public String twitter get;set;

      public User(JSONParser parser)
      while (parser.nextToken() != System.JSONToken.END_OBJECT)
      if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
      String text = parser.getText();
      if (parser.nextToken() != System.JSONToken.VALUE_NULL)
      if (text == 'name')
      name = parser.getText();
      else if (text == 'twitter')
      twitter = parser.getText();
      else
      System.debug(LoggingLevel.WARN, 'User consuming unrecognized property: '+text);
      consumeObject(parser);







      public User user get;set;

      public JSON2Apex(JSONParser parser)
      while (parser.nextToken() != System.JSONToken.END_OBJECT)
      if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
      String text = parser.getText();
      if (parser.nextToken() != System.JSONToken.VALUE_NULL)
      if (text == 'user')
      user = new User(parser);
      else
      System.debug(LoggingLevel.WARN, 'JSON2Apex consuming unrecognized property: '+text);
      consumeObject(parser);







      public static JSON2Apex parse(String json)
      System.JSONParser parser = System.JSON.createParser(json);
      return new JSON2Apex(parser);


      public static void consumeObject(System.JSONParser parser)
      Integer depth = 0;
      do
      System.JSONToken curr = parser.getCurrentToken();
      if (curr == System.JSONToken.START_OBJECT while (depth > 0 && parser.nextToken() != null);








      JSON.deserialize



      public class JSON2Apex 

      public class User
      public String name;
      public String twitter;


      public User user;


      public static JSON2Apex parse(String json)
      return (JSON2Apex) System.JSON.deserialize(json, JSON2Apex.class);











      share|improve this question














      The JSON2Apex web tool offers 2 methods of parsing of the JSON string: one uses JSON.deserialize method, and the other creates parser and iterates over the input json. The second option can be enabled by checking "Create explicit parse code" in the tool.



      QUESTION



      In what cases would a developer prefer explicit parsing to a simple JSON.deserialize? If we compare both options the later seems to be much clear and less verbose which makes code more readable.



      Explicit parsing



      public class JSON2Apex 

      public class User
      public String name get;set;
      public String twitter get;set;

      public User(JSONParser parser)
      while (parser.nextToken() != System.JSONToken.END_OBJECT)
      if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
      String text = parser.getText();
      if (parser.nextToken() != System.JSONToken.VALUE_NULL)
      if (text == 'name')
      name = parser.getText();
      else if (text == 'twitter')
      twitter = parser.getText();
      else
      System.debug(LoggingLevel.WARN, 'User consuming unrecognized property: '+text);
      consumeObject(parser);







      public User user get;set;

      public JSON2Apex(JSONParser parser)
      while (parser.nextToken() != System.JSONToken.END_OBJECT)
      if (parser.getCurrentToken() == System.JSONToken.FIELD_NAME)
      String text = parser.getText();
      if (parser.nextToken() != System.JSONToken.VALUE_NULL)
      if (text == 'user')
      user = new User(parser);
      else
      System.debug(LoggingLevel.WARN, 'JSON2Apex consuming unrecognized property: '+text);
      consumeObject(parser);







      public static JSON2Apex parse(String json)
      System.JSONParser parser = System.JSON.createParser(json);
      return new JSON2Apex(parser);


      public static void consumeObject(System.JSONParser parser)
      Integer depth = 0;
      do
      System.JSONToken curr = parser.getCurrentToken();
      if (curr == System.JSONToken.START_OBJECT while (depth > 0 && parser.nextToken() != null);








      JSON.deserialize



      public class JSON2Apex 

      public class User
      public String name;
      public String twitter;


      public User user;


      public static JSON2Apex parse(String json)
      return (JSON2Apex) System.JSON.deserialize(json, JSON2Apex.class);








      json parsing






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Apr 9 at 7:20









      EduardEduard

      1,9022724




      1,9022724




















          1 Answer
          1






          active

          oldest

          votes


















          4














          Apex code has reserved names (keywords) and special variable rules (e.g. cannot start with a number, can't have __, etc) that you can't use in JSON objects. You don't want to use explicit mode if you can help it, because it has worse performance compared to JSON.deserialize, but it gets around compilation errors if you have a JSON string like:



           "title": "Writing JSON", "abstract": "A short document about how to use JSON." 


          This would compile to:



          public class JSON2Apex 
          public String title;
          public String abstract;



          But abstract is a reserved keyword. You can't deploy this code to Salesforce. By changing the code:



          public class JSON2Apex 
          public String title;
          public String abstract_x;



          The code can then compile, but you need explicit parsing in order to translate abstract in the JSON string to abstract_x in Apex.






          share|improve this answer























          • Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

            – Eduard
            Apr 9 at 7:56






          • 1





            @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

            – sfdcfox
            Apr 9 at 7:59











          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "459"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f257118%2fexplicitly-parse-json-string-vs-json-deserialize%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          4














          Apex code has reserved names (keywords) and special variable rules (e.g. cannot start with a number, can't have __, etc) that you can't use in JSON objects. You don't want to use explicit mode if you can help it, because it has worse performance compared to JSON.deserialize, but it gets around compilation errors if you have a JSON string like:



           "title": "Writing JSON", "abstract": "A short document about how to use JSON." 


          This would compile to:



          public class JSON2Apex 
          public String title;
          public String abstract;



          But abstract is a reserved keyword. You can't deploy this code to Salesforce. By changing the code:



          public class JSON2Apex 
          public String title;
          public String abstract_x;



          The code can then compile, but you need explicit parsing in order to translate abstract in the JSON string to abstract_x in Apex.






          share|improve this answer























          • Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

            – Eduard
            Apr 9 at 7:56






          • 1





            @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

            – sfdcfox
            Apr 9 at 7:59















          4














          Apex code has reserved names (keywords) and special variable rules (e.g. cannot start with a number, can't have __, etc) that you can't use in JSON objects. You don't want to use explicit mode if you can help it, because it has worse performance compared to JSON.deserialize, but it gets around compilation errors if you have a JSON string like:



           "title": "Writing JSON", "abstract": "A short document about how to use JSON." 


          This would compile to:



          public class JSON2Apex 
          public String title;
          public String abstract;



          But abstract is a reserved keyword. You can't deploy this code to Salesforce. By changing the code:



          public class JSON2Apex 
          public String title;
          public String abstract_x;



          The code can then compile, but you need explicit parsing in order to translate abstract in the JSON string to abstract_x in Apex.






          share|improve this answer























          • Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

            – Eduard
            Apr 9 at 7:56






          • 1





            @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

            – sfdcfox
            Apr 9 at 7:59













          4












          4








          4







          Apex code has reserved names (keywords) and special variable rules (e.g. cannot start with a number, can't have __, etc) that you can't use in JSON objects. You don't want to use explicit mode if you can help it, because it has worse performance compared to JSON.deserialize, but it gets around compilation errors if you have a JSON string like:



           "title": "Writing JSON", "abstract": "A short document about how to use JSON." 


          This would compile to:



          public class JSON2Apex 
          public String title;
          public String abstract;



          But abstract is a reserved keyword. You can't deploy this code to Salesforce. By changing the code:



          public class JSON2Apex 
          public String title;
          public String abstract_x;



          The code can then compile, but you need explicit parsing in order to translate abstract in the JSON string to abstract_x in Apex.






          share|improve this answer













          Apex code has reserved names (keywords) and special variable rules (e.g. cannot start with a number, can't have __, etc) that you can't use in JSON objects. You don't want to use explicit mode if you can help it, because it has worse performance compared to JSON.deserialize, but it gets around compilation errors if you have a JSON string like:



           "title": "Writing JSON", "abstract": "A short document about how to use JSON." 


          This would compile to:



          public class JSON2Apex 
          public String title;
          public String abstract;



          But abstract is a reserved keyword. You can't deploy this code to Salesforce. By changing the code:



          public class JSON2Apex 
          public String title;
          public String abstract_x;



          The code can then compile, but you need explicit parsing in order to translate abstract in the JSON string to abstract_x in Apex.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Apr 9 at 7:38









          sfdcfoxsfdcfox

          265k13212459




          265k13212459












          • Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

            – Eduard
            Apr 9 at 7:56






          • 1





            @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

            – sfdcfox
            Apr 9 at 7:59

















          • Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

            – Eduard
            Apr 9 at 7:56






          • 1





            @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

            – sfdcfox
            Apr 9 at 7:59
















          Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

          – Eduard
          Apr 9 at 7:56





          Thanks for your prompt answer! If this is the only reason why a developer would use explicit parsing, then I would definitely go with deserialize all the time. It's possible to keep a Map of reserved words and their substitutes, and perform replace in the input json string before parsing. This is exaclty how the ffhttp_JsonDeserializer.cls class works.

          – Eduard
          Apr 9 at 7:56




          1




          1





          @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

          – sfdcfox
          Apr 9 at 7:59





          @Eduard Yes, there are better ways. JSON2Apex is a rather old utility, useful in most cases, but explicit mode wasn't the best idea. There's definitely better ways to do it.

          – sfdcfox
          Apr 9 at 7:59

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Salesforce Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f257118%2fexplicitly-parse-json-string-vs-json-deserialize%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

          Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

          Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221