2017-10-31 14 views
1

私の文字列に対して簡単な変換操作を実行しようとしています。目的は私の文字列をjson形式に変換することです。 "{u0027 \ \ u0027ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2クライアントID:\ u0027YmY3NjZkM2ItZDg3MC00ZjQwLTk1NjktNTE0N2M1YzExOWMx \ u0027、clientSecret} \" を行う方法私のjsonオブジェクトから不要な u0027を削除するには?

:私はJSONを印刷するとき

string clientID= newClient.GetClientId(); 
string clientSecret = "ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2"; 
var stringObject= "{ clientID:"+ "'"+clientID+"', clientSecret:"+"'"+clientSecret+"'}" ; 
var json= new JavaScriptSerializer().Serialize(stringObject); 

しかし..The出力はこのようなものを示してい不要な\ u0027を削除しますか?

+2

2つの文字列プロパティ、clientIDとclientSecretでクラスFooを作成するだけで、文字列をシリアル化するのではなく、Fooのインスタンスに値を代入してFooのインスタンスをシリアル化します。 – rene

+0

JSONは二重引用符を使用し、一重引用符は使用しません。さらに、clientIDとclientSecretは二重引用符で囲む必要があります。 –

+1

\ u0027は、自分自身を文字列に追加するアポストロフィー文字です。 JSON.NETのような適切なJSONシリアライズを使用し、@reneのようなクラスをシリアライズします。 –

答えて

0

は..:

using System.Web; 
using Newtonsoft.Json.Linq; 

namespace MyTestProjectConsole 
{ 
    public class Test1Json 
    { 
     public void ConvertJson() 
     { 
      string clientID = "aa"; 
      string clientSecret = "bb"; 
      var stringObject = "{ clientID:" + "'" + clientID + "', clientSecret:" + "'" + clientSecret + "'}"; 
      var json = JObject.Parse(stringObject); 
      Console.WriteLine(json); 
     } 

     public static void Main() 
     { 
      Test1Json obj = new Test1Json(); 
      obj.ConvertJson(); 
      Console.ReadKey(); 
     } 
    } 
} 

これは、次のような出力を生成しますコンソール内:

{ 
    "clientID": "aa", 
    "clientSecret": "bb" 
} 
1

最初のステップは、必要なJSON構造に一致するクラスをモデル化することです。この場合、2つの文字列プロパティを持つクラスを行います。その後、我々はJSONにそれをシリアライズすることができます

var foo = new FooType { 
    clientID = newClient.GetClientId(), 
    clientSecret = "ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2", 
}; 

public class FooType 
{ 
    public string clientID {get;set;} 
    public string clientSecret {get;set;} 
} 

次は、我々は、このクラスをインスタンス化し、そのプロパティを設定する必要が

var json= new JavaScriptSerializer().Serialize(foo); 

jsonにおける結果は次のようになります。

{"clientID":"42","clientSecret":"ZDUyYTYyMjYtMTcyNC00ODkxLWI2NmMtMDlhZjA3MDdiOGQ2"} 

値が二重引用符で囲まれ、単一のものではなく、エスケープ、削除、または置換に注意する必要はありません。これは主にシリアライザによって処理されるためです。

JavaScriptSerializerを使用しているコードでも動作しますが、documentationには、JSONのシリアル化ではJson.NETに切り替えることをお勧めします。あなたのアプローチは同じになります。これは、サンプルコードで

JObject json = JObject.Parse(str); 

直接文字列を変換しようとしている誰かのための問題に対処しますNewtonsoft.JSON.Linqからjオブジェクトを使用して

+0

ありがとう..私はこれを適用し、それが動作します..しかし、私はまだjson形式に文字列を直接変換する方法があるかどうか疑問に思っていました。 –

+0

@the_coder_in_meあなた自身のシリアライザロジックを書く必要があります。独自のシリアライザロジックを書くときに直面する問題の氷山の一角にすぎません。仕様に準拠した出力が必要であると仮定します。http://www.json.org/ – rene

関連する問題