Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 38

0
votes
answers
9 views
+10

如何從列表中獲取單個字符串項目<MyList>陣列列表

-2

我正在致力於recyclerview,我正在從json格式的API獲取數據。所以我創建了兩個模型。一個是我的回收查看數據,另一個是我的日曆視圖。我成功地使用自定義適配器在回收站視圖中獲取數據。現在我想從我的第二個模型中獲得json響應的日期。我這樣做了。如何從列表中獲取單個字符串項目<MyList>陣列列表

如何我讀日期從JSON迴應:我

final List<MyEventsDateModel> dateModel = new ArrayList<>(); 
String date = jsonArray.getJSONObject(i).getJSONObject("eventStudentListIbfk2rel").optString("scheduledDate"); 
      String mainDate[] = date.split("T"); 
      String eventDate = mainDate[0]; 
      dateModel.add(new MyEventsDateModel(eventDate)); 
      callback.onSuccess(dateModel); 

MyEventsDateModel.Class

public class MyEventsDateModel extends BaseModel { 
private String myEventDate; 

public MyEventsDateModel(String myEventDate) { 
    this.myEventDate = myEventDate; 
} 

public MyEventsDateModel(Context actContext, List<MyEventsResponseModel> myEventsModel) { 
} 

public String getMyEventDate() { 
    return myEventDate; 
} 

public void setMyEventDate(String myEventDate) { 
    this.myEventDate = myEventDate; 
} 
} 

現在成功的方法有我的最新型號使用這樣它的IAM:

public void onSuccess(List<MyEventsDateModel> dateModel) { 
//NOW HERE I WANT TO GET getMyEventDate(); how can i do that? 
     } 

試過這樣,但跟它的NullPointerException

String myDate = myEventsDateModel.getMyEventDate(); 
    LoggerUtils.error("Date", "" + myDate); 
    addDate(myDate); 

< < - 爲什麼標記爲重複這個問題?我知道什麼是空指針異常。我詢問了Json解析並從for循環中的響應中獲取每個字符串。請刪除重複的標記 - >>

沙发
0
1

嘗試這樣的:

MyEventsDateModel myEventsDateModel = dateModel.get(<PASS YOUR INDEX HERE>) 
String myDate = myEventsDateModel.getMyEventDate(); 
LoggerUtils.error("Date", "" + myDate); 
addDate(myDate); 
+0

非常感謝你,它的工作般的魅力!我不知道爲什麼@Tm Castelijns將此標記爲重複。 – KhanStan99

0
votes
answers
7 views
+10

人幫助我一下AJAX JSON

-1

我存儲在笨電腦板「迴應」,此數據:人幫助我一下AJAX JSON

{ 
    "ok": false, 
    "messages": { 
    "cgusrnm": "<p class="text-danger">The Full Name field is required.</p>", 
    "cgnnm": "<p class="text-danger">The Nick Name field is required.</p>", 
    "cgeml": "<p class="text-danger">The Email Address field is required.</p>", 
    "cgunm": "<p class="text-danger">The User Name field is required.</p>", 
    "cgpsd": "<p class="text-danger">The Password field is required.</p>", 
    "ccgpsd": "<p class="text-danger">The Confirm Password field is required.</p>", 
    "cgcnm": "<p class="text-danger">The Company Name field is required.</p>", 
    "cgadr": "<p class="text-danger">The User Address field is required.</p>", 
    "cgct": "<p class="text-danger">The City field is required.</p>", 
    "cgcnt": "<p class="text-danger">The Country field is required.</p>", 
    "cgzn": "<p class="text-danger">The State field is required.</p>", 
    "cgzc": "<p class="text-danger">The Zip Code field is required.</p>", 
    "cgpn": "<p class="text-danger">The Phone Number field is required.</p>", 
    "cgsn": "<p class="text-danger">The Skype Name field is required.</p>", 
    "pm": "<p class="text-danger">The Payment Method field is required.</p>", 
    "cgpeml": "<p class="text-danger">The Email Address field is required.</p>" 
    } 
} 

但AJAX文件無法讀取該陣列。

我的Ajax代碼:

$('#form_user').submit(function(e) { 
    e.preventDefault(); 

    var me = $(this); 

    $.ajax({ 
    url: me.attr('action'), 
    type: 'post', 
    data: me.serialize(), 
    datatype: 'json', 
    success: function(response) { 
     if (response.ok == true) { 
     alert('response'); 
     } else { 
     $.each(response.messages, function(key, value) { 
      var element = $('#' + key); 
      element.after(value); 
     }); 
     } 
    } 
    }); 
}); 

請幫助我。

+0

它可能是'response.data.ok'。 'console.log'取出'response'的值並調查它的結構。 – ceejayoz

+0

我在本教程中流動https://youtu.be/H1sHOvc8au0 – Abdullah

+0

我沒有看YouTube教程來回答這個問題。使用'console.log'來查看'response'的值是什麼。相應地調整代碼。 – ceejayoz

沙发
0
0

消息不是數組而是對象。 JSON數組看起來像{message:[「a」,「b」]}

+0

以便我如何正確完成我的工作 – Abdullah

+0

爲什麼無法工作我的代碼?我流這個教程https://youtu.be/H1sHOvc8au0 – Abdullah

板凳
0
1

即使數據類型是json,response變量的類型仍然是字符串。嘗試添加response = JSON.parse(response);將字符串轉換爲JavaScript對象。

+0

非常感謝你。 – Abdullah

+0

原因是你稱它爲'datatype'而不是'dataType'。 'datatype'不做任何事情。您可以擺脫'JSON.parse'並將其更改爲'dataType'。 –

+0

謝謝大衛,我想知道爲什麼它不起作用。我很困惑... –

0
votes
answers
7 views
+10

將AJAX GET響應的一部分(以JSON形式)存儲到字符串變量中的問題

0

我試圖通過AJAX將GET請求的一部分結果存儲到字符串變量中時出現問題。將AJAX GET響應的一部分(以JSON形式)存儲到字符串變量中的問題

基本上,我想使它包含GET請求操作的某個函數將返回該操作的結果。

var count = 0; 

$.getJSON("https://api.icndb.com/jokes/count", function(data){ 
    count = data.value+1; 
    for (i = 1; i < count; i++){ 
     if (i != 1) { 
      setTimeout(jokeGet, i*7500, i); 
     } 
     else { 
      jokeGet(i); 
     } 
    } 
}); 

function jokeGet(n) { 
    var str = ""; 
    $.getJSON("https://api.icndb.com/jokes/" + n, function(data){ 
     if (data.type != "NoSuchQuoteException") { 
      $(".joke").html(data.value.joke); 
      str = data.value.joke; 
     } 
     else { 
      count++; 
     } 
    }); 

    return str; 
} 

API我正在發出請求以將信息存儲在JSON樹中。下面是這種樹的兩個例子:

{ "type": "success", "value": { "id": 1, "joke": "Chuck Norris uses ribbed condoms inside out, so he gets the pleasure.", "categories": ["explicit"] } } 

{ "type": "NoSuchQuoteException", "value": "No quote with id=8." } 

但是,每當我運行單元測試(通過QUnit),事實證明,在任何及所有情況下,jokeGet()函數返回一個空字符串。這是我覺得很奇怪的事情,因爲我認爲str = data.value.joke系列會讓它變成這樣,這個笑話被存儲在變量str中。

顯然,因爲str總是以空字符串的形式返回,所以情況並非如此。有什麼建議,爲什麼這是?

更新

考慮到的是什麼,我現在在做的目的不是爲了讓程序工作,但做單元測試,以證明程序工作,我已決定將「單元測試」文件:

QUnit.test("cn_jokes", function(assert) { 
    function joke(n, expected) { 
     assert.equal(jokeGet(n), expected); 
    } 
    joke(1, "Chuck Norris uses ribbed condoms inside out, so he gets the pleasure."); 
    joke(8, undefined); 
    joke(163, "Ninjas want to grow up to be just like Chuck Norris. But usually they grow up just to be killed by Chuck Norris."); 
    joke(221, "Chuck Norris is the only person to ever win a staring contest against Ray Charles and Stevie Wonder."); 
    joke(352, "Chuck Norris doesn't see dead people. He makes people dead."); 
    joke(502, "Chuck Norris insists on strongly-typed programming languages."); 
    joke(526, "No one has ever pair-programmed with Chuck Norris and lived to tell about it."); 
    joke(598, "Once Chuck Norris and Superman had a competition. The loser had to wear his underwear over his pants."); 
}); 

正如你可以看到,我想獲得的jokeGet()功能,具體,返回笑話值。請讓我知道這是否可能。

沙发
0
2

$.getJSON是異步的前返回值;您的代碼將在請求發出時繼續運行。正因爲如此,str很久之前通過您傳遞給getJSON運行的回調返回。你或許應該有jokeGet需要一個回調函數,並調用它的請求完成(通過data.value.joke作爲參數)時:

function jokeGet(n, callback) { 
    $.getJSON("https://api.icndb.com/jokes/" + n, function(data){ 
     if (data.type != "NoSuchQuoteException") { 
      $(".joke").html(data.value.joke); 
      if (callback !== undefined && callback !== null) 
       callback(data.value.joke); 
     } 
     else { 
      count++; 
      if (callback !== undefined && callback !== null) 
       callback(undefined); // not sure if you want undefined or "" in this case 
     } 
    }); 
} 

編輯:您可以使用異步回調與QUnit。如上所述,只需使用assert.async()here

QUnit.test("cn_jokes", function(assert) { 
    var done = assert.async(); 
    var jokesDone = 0; 
    var numJokes = 8; // make sure to change this if you add more 
    function joke(n, expected) { 
     jokeGet(n, function(j) { 
      assert.equal(j, expected); 
      if (++jokesDone == numJokes) done(); 
     } 
    } 
    joke(1, "Chuck Norris uses ribbed condoms inside out, so he gets the pleasure."); 
    joke(8, undefined); 
    joke(163, "Ninjas want to grow up to be just like Chuck Norris. But usually they grow up just to be killed by Chuck Norris."); 
    joke(221, "Chuck Norris is the only person to ever win a staring contest against Ray Charles and Stevie Wonder."); 
    joke(352, "Chuck Norris doesn't see dead people. He makes people dead."); 
    joke(502, "Chuck Norris insists on strongly-typed programming languages."); 
    joke(526, "No one has ever pair-programmed with Chuck Norris and lived to tell about it."); 
    joke(598, "Once Chuck Norris and Superman had a competition. The loser had to wear his underwear over his pants."); 
}); 
+0

是否沒有辦法讓jokeGet()函數本身返回值? –

+0

@JMG不,不是真的。你可以讓'jokeGet'返回一個你用'data.value.joke'解決的'Promise',並用'await'在'async'函數中調用它。這可能會讓你的代碼看起來更加結構化,但對於像這樣簡單的東西來說,使用'await'看起來有點矯枉過正,IE並不支持它。 –

+0

@JMG剛剛注意到你的編輯。我會更新我的答案。 –

板凳
0
0

嘗試使用裏面的return語句,如果塊

if(condition){ 
return str; 
} else { 
return 
} 

我想這品行是由於JS的異步性質,GET請求完成

+0

無效。我猜是因爲jokeGet()裏面的函數(數據)。使用該策略,變量「str」被認爲是不屬於jokeGet()的變量,而是屬於與ajax調用相關的內部函數。 –

+0

嗯,你是對的,那麼你應該使用回調 –

0
votes
answers
6 views
+10

MongoDB中

1

進口CSV創建模式,我有一個CSV,看起來像這樣:MongoDB中

Number,Date,ClientName,ClientSurname,ClientAge,Option1,Option2 
    1,01/01/2015,John,Foo,24,30, 

使用mongoimport我得到

{ 
    "_id":ObjectID(""), 
    "Number":1, 
    "date":"01/01/2015", 
    "ClientName":"John", 
    "ClientSurname":"Foo", 
    "ClientAge":24, 
    "Option1":30, 
    "Option2": "", 
    } 

我想是

{ 
    "_id":ObjectID(""), 
    "Number":1, 
    "date":"01/01/2015", 
    "Client":[{ 
     "ClientName":"John", 
     "ClientSurname":"Foo", 
     "ClientAge":24, 
    }] 
    "Options":["30"] 
    } 

我試着與導入之前的驗證,但沒有工作,是否有可能改變模式,因爲我想現在我有數據導入,或者我應該使用另一種方法?

沙发
0
0

如果您在CSV標頭中使用虛線字段名稱,mongoimport會自動爲您創建子文檔。但是,這不適用於數組。

例如:

$ cat test.csv 
Number,Date,Client.Name,Client.Surname,Client.Age,Option.0,Option.1 
1,01/01/2015,John,Foo,24,30, 

$ mongoimport -d test -c test --drop --headerline --type=csv test.csv 

> db.test.find() 
{ 
    "_id": ObjectId("5a4f0768c481930d7c589a41"), 
    "Number": 1, 
    "Date": "01/01/2015", 
    "Client": { 
    "Name": "John", 
    "Surname": "Foo", 
    "Age": 24 
    }, 
    "Option": { 
    "0": 30, 
    "1": "" 
    } 
} 

要獲得Option數組,你需要做一些後期處理。

或者,您可以使用單獨的腳本來獲取CSV文件,並使用驅動程序(例如Pymongo)將其插入到MongoDB中。這樣,您就可以完全控制生成的文檔的結構。

+0

謝謝,如果我想引用而不是嵌入客戶端?還需要使用Pymongo還是有其他方法? – doe

+0

@更復雜的導入需求將需要自定義導入代碼,因爲'mongoimport'假設您的數據是每行一個文檔。 –

0
votes
answers
6 views
+10

無法使用JSON和PHP將URL鏈接存儲到MySQL中

0

我需要一些關於我的大學作業的明智建議。 我的工作是使用Phonegap製作年鑑,這是我第一次使用AJAX,JSON和JQuery Mobile。無法使用JSON和PHP將URL鏈接存儲到MySQL中

將圖片上傳到數據庫後,我嘗試從我的Google雲端硬盤上傳url鏈接。

這裏我javascript代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#insert").click(function() { 
      var nim = $("#NIM").val(); 
      var kesan = $("#kesan").val(); 
      var image = $('#image').val(); 
      var nama = $("#nama").val(); 
      var prodi = $("#prodi option:selected").text(); 
      var angkatan = $("#angkatan").val(); 
      var dataString = "nim=" + nim + "&nama=" + nama + "&prodi=" + prodi + "&angkatan=" + angkatan +"&kesan=" + kesan + "&image=" + image + "&insert="; 
      if ($.trim(nim).length > 0 & $.trim(kesan).length > 0 & $.trim(nama).length > 0 & $.trim(prodi).length > 0 & $.trim(angkatan).length > 0& $.trim(image).length > 0) { 
       $.ajax({ 
        type: "POST", 
        url: "http://localhost/perpusub/daftar.php", 
        data: dataString, 
        crossDomain: true, 
        cache: false, 
        beforeSend: function() { 
         $("#insert").val('Memasukkan...'); 
        }, 
        success: function(data) { 
         if (data == "success") { 
          alert("upload buku tahunan berhasil"); 
          location="index.html"; 
          $("#insert").val('submit'); 
         } else { 
          alert("Mohon maaf tampaknya anda sudah pernah mengupload buku tahunan sebelumnya.
 Silahkan hubungi admin web ini."); 
         } 
        } 
       }); 
      } 
      return false; 
     }); 
    }); 
    </script> 

這是我的形式上傳的圖片,並存儲每個學生的任何信息:

<body> 
    <div id="head1"> 
     Buat Halaman <br>Buku Tahunan Baru<br> 
     <a href="index.html" class="button button-clear" id=head>Keluar</a> 
    </div> 
    <br/> 
    <br/> 
    <div class="list"> 
     <input type="hidden" id="id" value="" /> 
     <div class="item"> 
      <label>NIM</label> 
      <input type="text" id="NIM" value="" /> 
     </div> 
     <div class="item"> 
      <label>Nama</label> 
      <input type="text" id="nama" value="" /> 
     </div> 
     <div class="item"> 
      <label>Prodi</label> 
        <select id="prodi"> 
         <option value="TIF" selected>TEKNIK INFORMATIKA</option> 
         <option value="SI">SISTEM INFORMASI</option> 
         <option value="TKOM">TEKNIK KOMPUTER</option> 
         <option value="PTI">PENDIDIKAN TEKNOLOGI INFORMASI</option> 
         <option value="TI">TEKNIK INFORMASI</option> 
        </select> 
     </div> 
     <div class="item"> 
      <label>Angkatan</label> 
      <input type="text" id="angkatan" value="" /> 
     </div> 
       <div class="item"> 
      <label>Kesan Pesan</label> 
      <input type="text" id="kesan" value="" /> 
     </div> 
     <div class="item"> 
     <label>Link File Foto<br></label> 
      <input type="text" id="image" value="" /> 
     </div> 
     <div class="item"> 
      <input type="submit" id="insert" class="button button-block" value="DAFTAR" /> 
     </div> 

    </div> 
</body> 

</html> 

這是PHP代碼,將其存儲到數據庫。

<?php 
include "db.php"; 
if(isset($_POST['insert'])) 
{ 
$nim=$_POST['nim']; 
$kesan=$_POST['kesan']; 
$nama=$_POST['nama']; 
$prodi=$_POST['prodi']; 
$angkatan=$_POST['angkatan']; 
$image = $_POST['image']; 

    $qa=mysqli_query($con, "INSERT INTO `anggota`(`NIM`, `nama`, `prodi`, `angkatan`, `kesanPesan`, `photo`) VALUES ('$nim','$nama','$prodi','$angkatan','$kesan','$foto')"); 
if($qa){ 
     echo "success"; 
} 

else{ 
    echo "error"; 
} 
} 


} 
?> 

,這是JSON解碼器年鑑頁:

<script type="text/javascript"> 
$(document).ready(function() { 
    var url = "http://localhost/php-code/json.php"; 
    $.getJSON(url, function(result) { 
     console.log(result); 
     $.each(result, function(i, field) { 
      var id = field.id; 
      var title = field.title; 
      var duration = field.duration; 
      var price = field.price; 
      $("#listview").append("<a class='item' href='form.html?id=" + id + "&title=" + title + "&duration=" + duration + "&price=" + price + "'><span class='item-note'>$" + price + "</span><h2>" + title + " </h2><p>" + duration + "</p></a>"); 
     }); 
    }); 
}); 
</script> 

但是,當我解碼JSON來顯示它到列表中,只顯示損壞的圖像圖標。我認爲將鏈接存儲到數據庫並將其解碼時存在問題。

我需要幫助,因爲我的任務必須在兩天內完成。謝謝。

+0

更新:我得到了新的證據,爲什麼我的圖片不能正常工作,因爲JSON不能只解碼URL。當有反斜槓(/)時,它會變成像這樣( /)。有誰知道如何解決它? –

沙发
0
0

有許多可能的誤差源的位置:

  • 你是不是將它們插入到數據庫之前轉義特殊字符。使用mysqli_prepare(http://php.net/manual/en/mysqli.prepare.php)。此外,這可以爲您節省SQL注入攻擊(或多或少)

  • 您正在使用哪個PHP版本?在真正的舊版本中,比如5.4和之前的版本,在get/post/cookie數據中的「邪惡」字符之前,有一個奇蹟般地添加反斜槓的開關。見magic quotes configuration更多信息

+0

我決定不使用準備語法故意分配截止日期。我的PHP版本是最新的。 –

0
votes
answers
6 views
+10

如何將JSON放入PHP變量中?

3

我試圖將JSON信息放入一個PHP變量中,並且我總是得到錯誤。如何將JSON放入PHP變量中?

這是我的代碼,以使JSON可讀:

header('Content-Type: application/json'); 
$jsondecode1 = json_decode($json1); 
print_r ($jsondecode1); 

這是$jsondecode1的一個片段:

Array 
(
    [0] => stdClass Object 
     (
      [flightId] => ****** 
      [******] => stdClass Object 
       (
        [******] => ****** 
        [******] => ****** 
        [******] => ****** 
        [******] => ****** 
        [******] => ******     
       ) 

注意:當我echojsondecode1它輸出這樣的:

陣列到字符串轉換 C: XAMPP ...... simpletest3.php上 線

所以我用print_r()

我試圖把(例如)[flightId]到一個PHP變量:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1->flightId; 
print_r ($jsondecode2); 

輸出:注意:試圖讓財產下不發對象的 'FLIGHTID' :. ........ 在線simpletest3.php

我嘗試了一些其他的代碼也一樣,但產出非常相似,我不想讓我的問題比需要的時間更長。 那麼,如何將(例如)[flightId]放入PHP變量中。

編輯:

解決方案:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1[0]->flightId; 
print_r ($jsondecode2); 

或者:

foreach ($jsondecode1 as $data) { 
    print_r($data->flightId); 
} 
沙发
0
2

你必須這樣做像下面(你顯示什麼)

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1[0]->flightId; 
echo $jsondecode2; 

但是你必須多維陣列,這樣做象下面這樣: -

$jsondecode1 = json_decode($json1); 

foreach ($jsondecode1 as $jsondecode) { 
    echo $jsondecode->flightId; // here you can use echo $flightId = $jsondecode->flightId; 
} 
+1

大它也能工作。非常感謝你。 :) – Deadpool

+0

@duffbeerisgood當你使用'json_decode()'它將json字符串轉換成對象數組 –

+1

@duffbeerisgood所以我應該使用json_decode()嗎? – Deadpool

板凳
0
2

你json包含一個對象數組,而不是1個對象。

$jsondecode1 = json_decode($json1); 

// loop through all objects in the array 
foreach ($jsondecode1 as $data) { 
    print_r($data->flightId); 
} 

或者,如果你只是想有數組的第一個對象:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1[0]->flightId; 
print_r ($jsondecode2); 

但接下來的問題是,爲什麼是JSON數組,而不是一個單一的對象?


你也不能簡單地附和或打印出非標量類型(如數組或對象)中,你將不得不使用print_r

+1

偉大的解決方案。謝謝 ! – Deadpool

+0

我不知道爲什麼JSON是一個數組,我想你們可以告訴我。 – Deadpool

+0

@duffbeerisgood這是你的輸入,所以我不能告訴你爲什麼它是這樣的:) $ json1是一個包含類似[{「flightId」:「******」,...}]之類的字符串。這是一組對象。如果它有{「flightId」:「******」,...},沒有[和]在它周圍,它是一個單一的json對象。 – Robert

地板
0
2

您的flightId位於一個陣列內,whoch索引爲0。所以,你必須首先訪問的是數組,那麼你可以得到flightId

試試下面的代碼:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1[0]->flightId; 
print_r ($jsondecode2); 
+0

很好,它的工作原理。非常感謝你。 :) – Deadpool

0
votes
answers
6 views
+10

在實體框架中添加json對象作爲數據庫中的BLOB

0

我是新的實體框架。我有一個帶有小部件的儀表板,這是我在Microsoft SQL Server中的表。 Table在實體框架中添加json對象作爲數據庫中的BLOB

我把widgets當成blob而不是作爲一個分離的實體的原因是因爲我不會在widgets表上查詢。像SELECT * FROM Dashboard WHERE dashboardid =x

只有數據這是我DashboardDAL類:

public class DashboardDAL 
{ 
    public Dashboard GetDashboardPerUser() 
    { 
     throw new NotImplementedException(); 
    } 

    public string AddWidget() 
    { 
     throw new NotImplementedException(); 
    } 
} 

我想補充一個小部件與實體框架。的小工具的JSON對象看起來是這樣的:

{name:"Weather", dashboardid:"2", userID:"4", "x":1,"y":0,"width":3,"height":1}

我如何添加控件對象,並將其保存在數據庫中的BLOB?

親切的問候

沙发
0
3

JSON是一個字符串。在實體上使用字符串屬性以將其與EF一起存儲。這將映射到SQL Server中的NVARCHAR(MAX)列,這是在SQL Server中存儲JSON的正確類型。

+0

非常感謝!這做了訣竅,我改變了小部件的數據類型。 – Fearcoder

0
votes
answers
6 views
+10

如果我想讓用戶和管理員在登錄後顯示不同的佈局,我該怎麼辦?

1

我的移動應用程序有2個用戶帳戶類型是管理員和用戶。如果我希望用戶和管理員在登錄後顯示不同的佈局,我該怎麼辦?這是我的登錄活動。有人可以幫助我嗎?我是初學者。謝謝。或者任何人有任何指導初學者做這些的鏈接也可以在這裏發佈。非常感謝大家。如果我想讓用戶和管理員在登錄後顯示不同的佈局,我該怎麼辦?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    connectionClass = new ConnectionClass(); 
    edtuserid = (EditText) findViewById(R.id.edtuserid); 
    edtpass = (EditText) findViewById(R.id.edtpass); 
    btnlogin = (Button) findViewById(R.id.btnlogin); 
    pbbar = (ProgressBar) findViewById(R.id.pbbar); 
    pbbar.setVisibility(View.GONE); 

    shp = this.getSharedPreferences("UserInfo", MODE_PRIVATE); 

    String userid = shp.getString("UserId", "none"); 

    if (userid.equals("none") || userid.trim().equals("")) { 

    } else { 

     Intent i = new Intent(LoginActivity.this, MainActivity.class); 
     startActivity(i); 
     finish(); 

    } 


    btnlogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      DoLogin doLogin = new DoLogin(); 
      doLogin.execute(""); 
     } 
    }); 

} 

public class DoLogin extends AsyncTask<String,String,String> 
{ 
    String z = ""; 
    Boolean isSuccess = false; 
    String userid = edtuserid.getText().toString(); 
    String password = edtpass.getText().toString(); 

    @Override 
    protected void onPreExecute() { 
     pbbar.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected void onPostExecute(String r) { 
     pbbar.setVisibility(View.GONE); 
     Toast.makeText(LoginActivity.this,r,Toast.LENGTH_SHORT).show(); 
     if(isSuccess) { 
      Intent i = new Intent(LoginActivity.this, MainActivity.class); 
      startActivity(i); 
      finish(); 
     } 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     if(userid.trim().equals("")|| password.trim().equals("")) 
      z = "Please enter User Id and Password"; 
     else 
     { 
      try { 
       Connection con = connectionClass.CONN(); 
       if (con == null) { 
        z = "Error in connection with SQL server"; 
       } else { 
        String query = "select * from dbo.demo where UserId='" + userid + "' and Password='" + password + "'"; 
        Statement stmt = con.createStatement(); 
        ResultSet rs = stmt.executeQuery(query); 

        if(rs.next()) 
        { 

         z = "Login successfull"; 
         isSuccess=true; 
        } 
        else 
        { 
         z = "Invalid Credentials"; 
         isSuccess = false; 
        } 

       } 
      } 
      catch (Exception ex) 
      { 
       isSuccess = false; 
       z = "Exceptions"; 
      } 
     } 
     return z; 
    } 
} 
沙发
0
0

我曾經做過這種項目。爲了克服這個登錄問題,我們在我們的數據庫中添加了一個作爲「角色」,它包含作爲管理員,用戶等的角色。爲管理員和用戶創建2個不同頁面。檢查登錄憑證後,檢查角色也會相應地重定向。

+0

謝謝。我創建了我可以知道在登錄憑據後添加什麼代碼 –

+0

在'if(rs.next())'寫了類似於if(rs.getString(「role」)。equals(「admin」)){重定向到管理頁面} else {重定向到用戶頁面}'。 –

+0

if(rs.getString(「AccountType」)。equals(「Seller」)){Intent i = new Intent(LoginActivity.this,MainActivity.class); startActivity(i);如果(rs.getString(「AccountType」)。equals(「Supervisor」)){ } Intent i = new Intent(LoginActivity.this,supervisor.class); startActivity(ⅰ); } 我這樣放這樣仍然不能這是因爲帳戶類型沒有從數據庫中檢索? –

0
votes
answers
6 views
+10

C#JSON解析字符串{X {Y}}

1

我嘗試使用C#來解析第二大括號內的字符串/ JSONC#JSON解析字符串{X {Y}}

字符串看起來是這樣的:

{"R27":{"DEVX":0.1346224}} 

我的目標是讀DEVX的價值,這是0.1346224

我已經試過:

var joR = JObject.Parse(R); 
string R27 = joR["R27"].ToString(); 

個返回值:{ 「DEVX」:0.1346224}}

string R27 = joR["DEVX"].ToString(); 

返回錯誤

有沒有辦法直接獲取價值 「0.1346224」 沒有用繩子打?

+0

是的:-)但是你需要工作什麼對象「DEVX」是一個屬性。 –

沙发
0
1

是的,絕對是 - 假設你知道所涉及的兩個名字,你可以只指數兩次,第一次拿到對象R27,那麼一旦該對象中得到的DEVX值:

using System; 
using Newtonsoft.Json.Linq; 

public class Test 
{ 
    static void Main() 
    { 
     string json = "{"R27":{"DEVX":0.1346224}}"; 
     var obj = JObject.Parse(json); 
     double devX = (double) obj["R27"]["DEVX"]; 
     Console.WriteLine(devX); 
    } 
} 
+0

謝謝。我很接近。只是很小的語法錯誤。現在工作很好。 – Lorean

+0

@Lorean:注意轉換爲'double'而不是'string',因爲它*是* JSON中的一個數值。當然,您可能會稍後將其轉換爲字符串,但我會盡可能長時間保持其「自然」形式。 (特別是,不要將其轉換爲字符串,然後再解析它...) –

+0

謝謝。這種方式甚至更好。 – Lorean

板凳
0
1
var joR = JObject.Parse(R); 
var R27 = joR["R27"]["DEVX"].ToString(); 
+0

謝謝。我很接近。只是很小的語法錯誤。現在工作很好。 – Lorean

+0

沒有toString,強制轉換爲更好的解決方案 – Yitzchak

0
votes
answers
6 views
+10

按維護順序快速解析json

0

假設我有一個json字符串,其中有一個名爲data的json數組。 陣列保持例如姓名,年齡,性別等用戶簡檔數據的JSON對象按維護順序快速解析json

現在要解析JSON對象按順序,例如,如果該對象是

{ 
    "name": "sample name", 
    "age": "30", 
    "gender": "male" 

} 

我想按照像name,age,gender這樣的順序解析列表,但是使用ios,當我將json對象轉換爲字典時,順序發生了變化,我知道字典沒有排序,所以實現此目的的替代方法是什麼?

它的第三方api所以我沒有任何的手,我們已經在android中使用鏈接哈希映射完成它,但真的卡在迅速,我想要做的最後一件事是用正則表達式解析。

IM解析JSON的方式如下:

var rootData = try JSONSerialization.jsonObject(with: data!) as! [String:Any] 
    if let val = fromList["data"] { 

let dataNode = val as! [[String:Any]] 

for row in dataNode { 


for (key,keyVal) in row { 
//here the key is not in order.because when we cast it as dictionary the order gets changed. 


    } 

} 

爲Android我們已經實現了與下面的函數來做到這一點:

public ArrayList<LinkedHashMap<String, Object>> parseJsonArrayList(String odata, String arrayName) { 
ArrayList<LinkedHashMap<String, Object>> mylist = new ArrayList<>(); 

try { 
JSONObject e = new JSONObject(odata); 
JSONArray data = e.getJSONArray(arrayName); 

for(int i = 0; i < data.length(); ++i) { 
JSONObject v = data.getJSONObject(i); 
LinkedHashMap<String, Object> map = new LinkedHashMap<>(100, 0.75f, false); 
Iterator keys = v.keys(); 

while(keys.hasNext()) { 
String key = String.valueOf(keys.next()); 
//gph.log("debug4", key); 
map.put(key, v.getString(key)); 
//gph.log("debug4", v.getString(key)); 
} 

mylist.add(map); 
} 
} catch (JSONException var10) { 
var10.printStackTrace(); 
} 

return mylist; 
} 
+3

正如你所說,字典沒有秩序,所以你爲什麼需要保持秩序?該命令無關緊要。 – rmaddy

+0

正如我所說的用戶配置文件數據,我需要按照順序來顯示它,所以首先命名,然後是年齡,然後是性別。如果在用戶配置文件年齡第一,然後名稱然後性別,這將看起來很奇怪。 可能有數百萬的原因,所以問題不是爲什麼,問題是如何。 –

+1

而不是字典使用自定義結構或類 – vadian

沙发
0
1

不要試圖訂購字典。相反,在創造你想要的順序按鍵的排列:

let keys = [「name」, 「age」, 「gender」] 

然後查閱字典與他們:

for key in keys { 
    let value = dict[key] 
    // Present the value. 
} 

這將確保你所期望的順序。

+0

我不能,導致密鑰是動態的從服務器,可以改變,所以手動創建一個密鑰數組是不可能的。 如果我可以用正確的順序迭代json對象的鍵,這將有助於達到目的。 –

+0

除非服務器以「正確」的順序分別發送給你一個密鑰數組,否則無法確定什麼是正確的方法。正如其他人所說,他的字典鍵沒有保證的順序,所以從字典的角度來看,任何順序都是正確的。 –

板凳
0
0

正如您所提到的,您無法獲取Dictionary中的有序數據。如果可能的話,你可以在你的JSON添加「命令」鍵像

[ 
    { 
    "name": "sample name", 
    "order": 1 
    }, 
    { 
    "age": "30", 
    "order": 1 
    }, 
    { 
    "gender": "", 
    "male": "", 
    "order": 1 
    } 
] 

,以便根據訂單鍵可以進行排序。

+0

正如我所說,它的第三方API,我沒有任何處理它。 如果它在我身上,我會發送每個關鍵vallue作爲json數組。 –

+0

如果可能的話,從第三部分api獲取訂購JSON的邏輯,並在iOS中使用相同的 –