2016-01-18 13 views
7

मैं एक जेसन ऑब्जेक्ट में सी # ऑब्जेक्ट को क्रमबद्ध करने की कोशिश कर रहा हूं। उसके बाद सेल्सफोर्स एपीआई को जमा किया जाएगा, और एक आवेदन तैयार किया जाएगा। अभी मेरे पास सी # ऑब्जेक्ट है जो एक जेसन स्ट्रिंग में क्रमबद्ध है, लेकिन मुझे इसे ऑब्जेक्ट होने की आवश्यकता है।सी # ऑब्जेक्ट को जेसन ऑब्जेक्ट में कनवर्ट करें

मेरे सी # ऑब्जेक्ट के साथ सीरियलाइजेशन के साथ यहां है।

Customer application = new Customer { 
    ProductDescription = "gors_descr " + tbDescription.Text, 
    Fname = "b_name_first " + tbFName.Text, 
    Lname = "b_name_last " + tbLName.Text 
}; 

var json = new System.Web.Script.Serialization.JavaScriptSerializer(); 
string jsonString = json.Serialize(application); 

string endPoint = token.instance_url + "/services/apexrest/submitApplication/";  
string response = conn.HttpPost(endPoint, json, token); 
Literal rLiteral = this.FindControl("resultLiteral") as Literal; 

मुझे JSON ऑब्जेक्ट के अंदर आउटपुट करने के लिए JSON स्ट्रिंग की आवश्यकता है। मुझे जो चाहिए वह एक उदाहरण है:

"{ \"jsonCreditApplication\" : " + 
    "\"gors_descr\" : \"Appliances\", " + 
    "\"b_name_first\" : \"Marisol\", " + 
    "\"b_name_last\" : \"Testcase\", " + 
"}"; 

यह हार्ड कोडित जेसन स्ट्रिंग किसी ऑब्जेक्ट के अंदर है। जैसा कि यह खड़ा है, सी # ऑब्जेक्ट में मान जेएसओएन स्ट्रिंग में आउटपुट किए जा रहे हैं, लेकिन मुझे इसे ऑब्जेक्ट में आउटपुट की आवश्यकता है ताकि सेल्सफोर्स एपीआई सबमिशन स्वीकार कर सके।

मैं किसी ऑब्जेक्ट में JSON स्ट्रिंग को कैसे जोड़ या सम्मिलित कर सकता हूं?

+0

http://stackoverflow.com/questions/45015/safely-turning-a-json-string-into-an-object?rq=1?स्टार्टर्स के लिए – stuartd

+0

सुनिश्चित करें कि आपकी जेसन स्ट्रिंग मान्य है, आप वास्तव में इस साइट का उपयोग जेसन स्ट्रिंग को सी # क्लास में परिवर्तित करने के लिए कर सकते हैं http://json2csharp.com/ इस लिंक को भी देखें [सी # ऑब्जेक्ट में जेसन में कनवर्ट करें] (http: // stackoverflow.com/questions/6201529/turn-c-sharp-object-into-a-json-string-in-net-4) – MethodMan

+0

जब आप 'एप्लिकेशन' को क्रमबद्ध करते हैं तो सबसे पहले आपको JSON मिलेगा जो इस तरह दिखेगा: ' {"उत्पाद विवरण": "gors_descr उपकरण", "Fname": "b_name_first Marisol", ...} '। यह जेएसओएन की तरह दिखता नहीं है। –

उत्तर

11

सही JSON बनाने के लिए आपको पहले उचित मॉडल तैयार करने की आवश्यकता है।

[DataContract] 
public class Customer 
{ 
    [DataMember(Name = "gors_descr")] 
    public string ProductDescription { get; set; } 

    [DataMember(Name = "b_name_first")] 
    public string Fname { get; set; } 

    [DataMember(Name = "b_name_last")] 
    public string Lname { get; set; } 
} 

Data गुण आप कुछ अन्य JSON serializer चुनना होगा उपयोग करने के लिए सक्षम होने के लिए: यह ऐसा ही कुछ हो सकता है। उदाहरण के लिए DataContractJsonSerializer या Json.NET (मैं इस उदाहरण में इसका उपयोग करूंगा)।

Customer customer = new Customer 
{ 
    ProductDescription = tbDescription.Text, 
    Fname = tbFName.Text, 
    Lname = tbLName.Text 
}; 


string creditApplicationJson = JsonConvert.SerializeObject(
    new 
    { 
     jsonCreditApplication = customer 
    }); 

तो jsonCreditApplication चर हो जाएगा:

{ 
    "jsonCreditApplication": { 
    "gors_descr": "Appliances", 
    "b_name_first": "Marisol", 
    "b_name_last": "Testcase" 
    } 
} 
+0

यह anwser महान था! न्यून्सॉफ्ट समाधान का उपयोग करने के लिए धन्यवाद –

0

आप http://restsharp.org/ जैसे कुछ का उपयोग कर सकते हैं, जो REST के लिए एक सी # लाइब्रेरी है। यदि हां, तो यह एक json वस्तुओं के लिए serializer में बनाया गया है (.addJsonBody()) या आप इसे अपने आप को क्रमानुसार और

request.AddParameter("application/json; charset=utf-8", json, ParameterType.RequestBody); 

वैकल्पिक रूप से जोड़ने आप इसे पर अधिक नियंत्रण आप उपयोग कर सकते हैं चाहते हैं, तो कर सकते हैं

System.Net.HttpWebRequest() 

मुझे https://github.com/ademargomes/JsonRequest भी मिला है, लेकिन यह अभी भी विकास में है। चेतावनी दीजिये कि यदि आप RestSharp की तरह कुछ उपयोग करते हैं, तो यह एक डिब्बाबंद अनुरोध है, इसलिए मानक अनुरोधों के रूप में उन्होंने जो कुछ बनाया है, उससे भिन्नता (जैसे मल्टीपार्ट/फॉर्म डेटा डब्ल्यू/जेसन या कस्टम हेडर या यहां तक ​​कि कस्टम प्रमाणीकरण) उनके साथ काम नहीं कर सकते हैं पुस्तकालय, इस मामले में वैसे भी HttpWebRequest का उपयोग करके स्वयं को बेहतर बनाना बेहतर है। उम्मीद है की वो मदद करदे!

2

एक और तरीका है।

using System; 
using Newtonsoft.Json; 

namespace MyNamepace 
{ 
    public class MyCustomObject 
    { 
     public MyCustomObject() 
     { 
     } 

     [JsonProperty(PropertyName = "my_int_one")] 
     public int MyIntOne { get; set; } 

     [JsonProperty(PropertyName = "my_bool_one")] 
     public bool MyBoolOne { get; set; } 

    } 
} 

और

 /* using Newtonsoft.Json; */ 

     MyCustomObject myobj = MyCustomObject(); 
     myobj.MyIntOne = 123; 
     myobj.MyBoolOne = false; 

     string jsonString = JsonConvert.SerializeObject(
      myobj, 
      Formatting.None, 
      new JsonSerializerSettings() 
      { 
       ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore 
      }); 

लेखन के समय

http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonSerializerSettings.htm

मेरे packages.config देखें ... हालांकि मैं कर रहा हूँ यकीन है कि भविष्य/नवीनतम संस्करण अभी भी यह समर्थन करेंगे :

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" /> 
</packages> 
+0

+1 - बस याद रखें कि इसका उपयोग करने के लिए आपको NuGet पैकेज मैनेजर का उपयोग करके अपने पैकेज को स्थापित करने की आवश्यकता है, और (ज़ाहिर है) में अपने "उपयोग" सेक्शन –

+1

हे पर न्यूटॉन्सॉफ्ट.जेसन शामिल हैं। प्रतिक्रिया के लिए धन्यवाद। मैंने संकुल.कॉन्फिग जोड़ा। "उपयोग" पहले से ही था! :) – granadaCoder

संबंधित मुद्दे