Q:

error as Method does not exist or incorrect signature: void writeStringField(String, Object) from the type System.JSONGenerator

trigger CM_FieldMappingTrigger on Campaign (before update) {
//dynamically get the fields from the field set and then use the same for comparison in the trigger.
Map<String, Schema.SObjectField> schemaFieldMap = Schema.SObjectType.Campaign.fields.getMap();//Get the schema field map to get all the fields 
set<String> allCampaignFieldList = new set<String>(); //Get all the fields of campaign object
allCampaignFieldList.addAll(schemaFieldMap.keySet());
JSONGenerator generator = JSON.createGenerator(true);  

    for(Campaign a: trigger.new){
    set<String> changedFieldSet  = new Set<String>();
    for(string s: allCampaignFieldList){
        if(a.get(s) != trigger.oldMap.get(a.Id).get(s)){
            changedFieldSet.add(s);//adding fields whose value changed
            system.debug('changedFieldSet'+changedFieldSet);
        }
    }
    generator.writeStartObject();                            
    generator.writeObjectField('show details', allCampaignFieldList);
    if(changedFieldSet.size()>0){
        for(string fc:changedFieldSet){
          String jsonString = generator.getAsString(); 
           a.Parent_Field_Tracking__c=jsonString; 
        }

    }
}
}

A:

You are making this more difficult than you need to. You don't need JSONGenerator at all.
Instead, build the data structure that you want stored, and then serialize that directly to JSON. For example, you could do this:
    List<Map<String, String>> changeFieldData = new List<Map<String, String>>();

    if(a.get(s) != trigger.oldMap.get(a.Id).get(s)){
        changeFieldData.add(
            new Map<String, String>{
                'NewValue' => a.get(s),
                'OldValue' => trigger.oldMap.get(a.Id).get(s),
                'FieldName' => s
            }
        );
    }

if what you want stored is a list of objects, where each object has a key for the new value, the old value, and the field name. 
Then just do 
a.Parent_Field_Tracking__c = JSON.serialize(new Map<String, Object>{ 'show details' => changeFieldData });

to serialize the data structure into JSON.
As a side note, Salesforce field history tracking is a better solution to this problem.

